Excel文件的导入和导出
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015 与Excel文件的导入和导出
作者:黄富滔
撰写时间:2020年08月09日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
知识点罗列
Excel的导出:
导出分两种,一种是在已有的模板里面导出数据,另外一种就是自己构建表头、标题等。
区别就在于在已有模板里面进行导出数据的要判断模板是否存在、使用NPOI打开模板,没有模板的就要自己构建标题、表头,给标题表头添加上一定的样式。
一 、导出数据到模板的步骤:
- 根据条件查询出要进行导出的数据
- 判断模板是否存在
- 使用NPOI打开模板文件
- 得到工作簿,再根据工作簿打开工作表,要具体到某一个工作表
- 给工作表设置标题,因为要显示给用户看,让用户知道自己导出的数据是什么
- 给工作表里面的单元格创建样式(指的是数据部分的单元格),可以设置内容在水平垂直方向上居中、添加边框、字体大小、字体颜色等等。
- 通过循环的方式开始填充数据,数据填充的方式是一行一行的进行填充的。这里需要注意的是从第几行开始填充数据,一般情况下是从索引值2,也就是第三行开始填充,因为标题和表头已经占据了两行。同时在循环里面再次遍历循环所有的数据单元格,给他们设置样式,上面只是创建了样式,并没有添加进行设置。
- 以流的方式返回,返回的信息有:流形式的数据、文件类型、文件名称
二 、 直接导出(没有模板)
- 根据条件查询出要进行导出的数据
- 创建工作簿,再根据工作簿创建工作表,同时可以设置工作表的名称
- 创建标题行,再创建标题单元格设置标题,设置标题名称、设置标题样式(字体大小、字体颜色、背景颜色、居中等)、合并单元格
- 创建表头行,再创建单元格,把表头内容塞进单元格,创建表头单元格样式(字体大小、字体颜色、背景颜色、居中等),通过循环给表头行的每一个单元格设置样式
- 先为数据部分的单元格创建样式(居中,边框),然后遍历循环设置导出的数据,再遍历循环所有的数据单元格,设置样式
- 设置列的宽度为自动适应
- 以流的方式返回,返回的信息有:流形式的数据、文件类型、文件名称
Excel的导入
三 、导入操作
- 先让用户下载模板,根据模板填写要进行导入的数据
- 当用户上传文件后,根据文件的后缀名判断是否是该类型的文件
- 把文件转换为二进制数组,再读取文件的字节长度
- 二进制数组转成内存流
- 利用NPOI把内存流中的数据读取成Excel
- 使用NPOI读取数据,判断工作簿中是否存在工作表,工作表中是否存在数据,工作表的行数是否大于0
- 将工作表的除了说明部分的所有数据写入到临时表
- 根据临时表的数据,先移除空白行,再进行数据的判断,是否重复,是否符合模板的格式,数据是否存在该字段
- 如果数据验证通过,保存新导入的数据到数据库