ASP.Net. MVC 导入与导出
文献种类:专题技术文献;
开发工具与关键技术: Visual Studio
文献编号:ASP.Net. MVC 导入与导出
年级:1904
撰写时间:2020 年 8 月 8 日
作者:张家诚
导入*
导入 Excel 表格是方便我们在开发数据中快速的导入数据,而不是一条一条数据的新增,导入 Excel 表格方便我们快速的保存数据,判断数据的正确性,接下来就是我学习开发时候导入 Excel 表格的一些数据代码。
首先创建一个 Excel 模板,用来创输数据,因为模板方便判断导入的数据是否是 Excel 的表格,通过页面传输过来的数据,开始封装数据,首先开始获取模板路径,然后判断模板是否存在,再获取文件名称,最后返回页面。确保 Excel 中标题行的名称和表单中与之对应的字段的标题一致,并且表单中字段名称不能相同。以及 Excel 中数据的格式要正确,序号无法导入。
一、下载模板
1.获取模板路径 :string filePath = Server.MapPath("~/Document/用户导入模板.xls");
2.判断模板是否存在 :if (System.IO.File.Exists(filePath))
3.获取文件名称: string strfileName = Path.GetFileName(filePath);
4.返回文件:return File(newFileStream(filePath, FileMode.Open),
“application/octet-stream”, strfileName);
5.使用字符串创建一个内容结果对象:return Content("模板文件不存在,请联系系统运维人员。
");
如图:
二、
1.判断页面传过来的文件是否为 Excel 表格:string strExtension =
Path.GetExtension(xlsFile.FileName);
- 获取文件的后:(".xls".Equals(strExtension,
StringComparison.CurrentCultureIgnoreCase))
3.声明二进制数组存放文件: byte[] fileBytes = new byte[xlsFile.ContentLength];
4.将传入的文件转化为二进制的数组存入:xlsFile.InputStream.Read(fileBytes, 0, xlsFile.ContentLength);
5 将二进制的数组转化为内存流:MemoryStream excleMemoryStream = new
MemoryStream(fileBytes);
6.将内存流转化为工作簿 :NPOI.SS.UserModel.IWorkbook workbook = new
NPOI.HSSF.UserModel.HSSFWorkbook(excleMemoryStream);
7.判断工作簿中是否有工作表:(workbook.NumberOfSheets > 0)
查询出角色,用户组,用户名,工号,余额,E-mali,头像:用来根据名称获取对应的 ID
8 获取第一个工作表: NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
9.工作表中是否有数据: (sheet.PhysicalNumberOfRows > 0)
10.先把Excel保存到临时表格里面(DataTable中):DataTable dt = new DataTable();
- 获取标题行— 第二行,索引为1;第一行是说明:NPOI.SS.UserModel.IRow rowHeader = sheet.GetRow(1);
如图:
12.获取表格列数:int cellCount = rowHeader.LastCellNum;//行里面获取列总数
14.获取表格行数(最后一行下标+1): int rowCount = sheet.LastRowNum + 1;//工作表获取行总数
15. Excel表头作为dt的列,创建dataTable中的列,循环添加标题行中各个单元格的值
for (int i = rowHeader.FirstCellNum; i < cellCount; i++)
如图:
- 遍历表头行中每一个单元格,获取标题行各个单元格的数据并移除空行
三、封装查询的数据,判断数据是否为空,记录保存成功的数据条数,记录数据库已有数据重复而失败的数据条数,声明一个全局变量,判断数是否没有异常,没有就继续判断数据库中是否和传进来的数据是否重复
四、把提取到的数据保存到数据库中,新增到用户表里面,把传输进来的数据保存到表格里面,最后返回页面。
导出:
数据库数据的导出,在大多数系统都是常见的,所以导出功能还是很重要的。数据的导出一般导出在 Excel 表格中,因为导入 Excel 中数据可观性较好。
例:
一、导出 Excel 表格,首先通过页面传输过来的数据进行封装,筛选数据条数,把页面的数据导出 Excel 表格,判断需要导出的数据条数,判断数据条数,参数查询的判断。
1、数据查询&条件筛选
筛选导出的数据
1、创建 Excel 工作簿,和工作表格,设置表头,为 Excel 表格添加数据,创建行,添加数据,输出文件导出的内容。
有两种方法进行导出一种是根据模板文件直觉导出一种是自己设置 Excel 表头等数据进行导
出
2.1 根据模板文件的 Excel 导出
(1)检查模板文件是否存在
Server.MapPath 将相对的路径转为实际的物理路径
string templatePath = Server.MapPath("~/Document/ARDataTemplate.xls");
(2)判断模板是否存在
if (!System.IO.File.Exists(templatePath))
{
//如果不存在,就返回失败信息 return Content(“导出失败,请联系网站管理员”);
}
(3)构建单元格样式
(4)以流的方式返回把 Excel 转化为流,输出
2.2 根据创建 Excel 进行导出
根据创建 Excel 工作簿,和工作表格,设置表头,为 Excel 表格添加数据,创建行,添加数据,输出文件导出的内容。
设置导出的内容,查询需要导出的数据,设置导出表头,然后添加数据,为文件命名,把文件导出 Excel 表格,把文件写入文件流,最后输出数据,把文件类型转换一下,最后导出就可以了。
(1)导出 Excel 表头
(2)导出Excel数据