Excel数据导入___你hold住么(一)

最近小编跟着团队一起开发ITOO3.0高校云平台项目,其中的收获是不言而喻滴,在项目中有个导入功能:导入学生信息;导入班级信息:导入教学楼信息等,在不知多少次的尝试之下,成功实现功能。

框架分析

详细解释一下

- 加粗

-第一步:在MVC框架的Client端新建文件夹

- 第二步:通过NPOI文件流(具体的专业名称不知道是叫啥,姑且称文件流)将保存在Client的Excel文件流传到WCF框架的Server端

- 第三步:在Server端中,新建文件夹保存Excel模板的xml文件

Server端中的XML文件起到解析的作用,从而将Excel 中的数据插入Insert到数据表中


代码设计

上传Excel到Server

* Controller

private readonly IUploadFile upLoadService1 = ServiceFactory.GetUploadFileService();

#region ImportFlowBatch()+批量导入流程-徐露-2015年7月8日10:39:02

///

/// 批量导入流程

///

///

public ActionResult ImportFlowBatch()

{

#region 文件验证以及上传到指定文件夹 Client端

HttpPostedFileBase file = Request.Files[“files”];

string strFileName;

string strSavePath;

string ClientPath = AppDomain.CurrentDomain.BaseDirectory + “File\UpFile\”;

string strPaperId = “1”;

//这个是Client端的文件保存路径

        if (file == null || file.ContentLength <= 0)
        {
            ViewBag.error = "文件不能为空";
            return View();
        }
        else
        {
            string strFilename = Path.GetFileName(file.FileName);
            int intFilesize = file.ContentLength;//获取上传文件的大小单位为字节byte
            string fileEx = System.IO.Path.GetExtension(strFilename);//获取上传文件的扩展名
            string strNoFileName = System.IO.Path.GetFileNameWithoutExtension(strFilename);//获取无扩展名的文件名
            int Maxsize = 4000 * 1024;//定义上传文件的最大空间大小为4M
            string FileType = ".xls,.xlsx";//定义上传文件的类型字符串

            strFileName = strNoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
            if (!FileType.Contains(fileEx))
            {
                ViewBag.error = "文件类型不对,只能导入xls和xlsx格式的文件";
                //return View();
            }
            if (intFilesize >= Maxsize)
            {
                ViewBag.error = "上传文件超过4M,不能上传";
                //return View();
            }
            strSavePath = Path.Combine(ClientPath, strFileName);
            file.SaveAs(strSavePath);
        }
        #endregion

        #region 将Client端上传的文件  上传到Server端
        FileUploadMessage myFileMessage = new FileUploadMessage();
        string strDataFileName = file.FileName;
        myFileMessage.FileName = strDataFileName;//文件名
        string CientPathName = ClientPath + strFileName;
        using (FileStream fs = System.IO.File.OpenRead(CientPathName))
        {
            myFileMessage.FileData = fs;
            try
            {
                upLoadService1.UploadFileMethod(myFileMessage);
            }
            catch { }
            //关闭流
            fs.Close();
        }
        #endregion
        string[] HeadName = { "流程ID", "流程名称", "优先级", "是否启用(启用1,未启用0)", "流程Url", "时间戳", "是否删除" };

        //调用执行 写数据库
        if(upLoadService1.ServiceReadFile (strDataFileName ,strPaperId )==null) {

         return RedirectToAction("Index","ImportStudent");
        }
        else
        {
            DataTable table = upLoadService1 .ServiceReadFile (strDataFileName ,strPaperId )[0];
            return File (Export .ExportManager .ExportExcel (table,HeadName ),"application/vnd.ms-excel", "流程导入错误列表" + ".xls");

        }
    }
    #endregion

*在Service中读取Excel文件,写入数据库

需要加的三个:IUploadFile(接口)、UploadFile(实现类)、以及ServiceFactory(工厂)

篇幅限制,具体代码不再粘贴,小编会具体上传Demo,另行下载

*XML配置

针对每一个导入的Excel都需要一个相应的XML配置文件,以便底层方法能够解析获取

XML应统一放置在某一路径下,具体路径配置如下:

WebConfig.xml添加配置节点:

在下添加节点

即将配置文件存放路径放在了Service层的Models/ImportConfigXML文件夹下。

命名:各系统可根据具体情况具体命名,调用方法时需要传入XML文件名称

具体XML配置可参考:

<?xml version="1.0" encoding="utf-8" ?>
<Excel name="导入流程模板">
  <Sheet name="流程" table="FreshFlowEntity" primaryKey="FlowID" pkType="guid">

    <Column name="流程名称" field="Name">
      <DataType>string</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
    <Column name="优先级" field="Sort" isNecessary="true">
      <DataType>int</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
    <Column name="是否启用(启用1,未启用0)" field="IsUse" isVerifyRepeat="false"  >
      <DataType>int</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
    <Column name="流程Url" field="Url" isVerifyRepeat="false">
      <DataType>string</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
    <Column name="时间戳" field="TimeSpan" isNecessary="false" isVerifyRepeat="false" >
      <DataType>DateTime</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
    <Column name="是否删除" field="IsDelete" isVerifyRepeat="false">
      <DataType>int</DataType>
      <ForeignKey isExist="false"></ForeignKey>
    </Column>
  </Sheet>
</Excel>

以上就是做导入的基本流程,那是不是完好敲出代码就能正常运行呢,请见小编下文分析

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-14 15:12:04

Excel数据导入___你hold住么(一)的相关文章

Excel数据导入___你hold住么(二)

小编在上一篇博文中描述了Excel数据导入的大致流程和一个Demo实例 Excel数据导入___你hold住么(一)          在本篇将带领大家一同了解 导入Excel流程和问题解决方案: 导入Excel流程和步骤 需要注意的是在Server端的Web Config 中添加这几行代码 <!-- 导入Excel 徐露 -2015-7-8 --> <appSettings> <addkey="DbContextFactoryclassFulleName"

kettle将Excel数据导入oracle

导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/176777.html 2.使用Kettle工具,免费,相比之下功能更丰富,可实现一定的业务逻辑,推荐使用 Kettle将Excel数据导入Oracle过程记录如下: 1.准备Excel文件: 注意:Excel文件要有字段名称说明:如这里的id,name,age 2.打开Kettle,文件-->新建--

excel数据导入导出数据库

第一种方法: 先把Excel另存为.csv格式文件,如test.csv,再编写一个insert.ctl 用sqlldr进行导入! insert.ctl内容如下: load data          --1.控制文件标识 infile ‘my.csv‘          --2.要输入的数据文件名为my.csv append into table "tbl_test"   --3.向表table_name中追加记录 fields terminated by ‘,‘          

MATLAB/Excel-如何将Excel数据导入MATLAB中

在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下向大家演示如何将Excel数据导入到MATLAB中,其他版本的MATLAB.OFFICE方法大同小异,一起来看一下 工具/原料   Excel数据文件(格式xls或xlsx) MATLAB 7.x + 方法/步骤     将待导入的矩阵结构的数据录入Excel中,录入时注意行列要跟原矩阵一一对应  

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

利用TOAD实现把EXCEL数据导入oracle数据库

利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然后Database->Import->Table Data打开了导入窗口,如下图   选择一个数据库表,点击Show Data按钮,可以显示表中的内容 其中schema 就是这张表的所属用户 Object type 就是 table Object name 就是表的名称 Commit mode 

将Excel数据导入mysql数据库的几种方法

将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面和大家分享一下: 一.用java来将Excel表格中的数据转到mysql中 这是我们用的第一种方法,就是在java找你感谢个类,然后这个类会将Excel表格中的数据存储到内存里,然后再从内存中读出来插入到数据库中,但是要 注意了,这里是存储到String[ ]数组里面,所以取出来的数据也是Strin

excel数据导入到sqlserver中---------工作笔记

调用页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using JuMi.BLL.Business; using System.Data; using System.Data.OleDb; using System.Windows.Forms; using Ju

Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具.这当然不是没有理由的:Excel以其强大丰富的各种功 能,已经成为办公环境中不可或缺的工具. 然而,现在公司正在逐渐地将数据开始存储在远程数据库中,这样可以供企业员工从不同的地方来阅读和修改数据.但是,以前固有的工作流程习惯是很难打破的.当你的老板需要从远端使用Excel以饼图的形势来看一下最近的销