导入导出数据的总结
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据的导出(excel表格)
数据的导出有两种方式:
第一种:在控制器内部定义工作簿的样式,在表头复杂的时候,代码量较多,
相对麻烦;
第二种:在外部提前定义好一个工作簿的模板,引入即可,可省略大部分定义表头标题的
代码,相对简便;
1. 数据的导出,其实就是利用了浏览器的下载功能;
2. 一般都会在新页面打开下载的url,调用window.open();
3. 如果在本页面打开下载的url,浏览器将很难识别下载;
4. 在C#中,是不支持直接对excel表格的操作的;因此,需要使用第三方主键;
有两种方法:
第一种:msoffice excel, 这个比较麻烦,且不具有兼容性,使用时,必须要安装office,
同时,如果在别的电脑运行,office的版本(包括小版本)必须要一致;否则就会报错;
第二种:NPOI (JAVA POI)(JAVA NET.POI)两个版本,它其实就是一个库;
使用里面的xls的功能,基本版本,兼容性相对好一点;还是另外一个xlsx版本
xlsx版本,这个版本是由微软开发的一个新版本,扩展版本;
5. 在数据导出之前,需要创建一个(excel 工作簿),其实就相当于,在存放物品的时候,先准备一个用于存放物品的盒子,盒子准备好后,才将物品放进来;
6. 创建工作簿的步骤:(第一种导出方式)
1. 创建一个工作簿;
NPOI.HSSF.UserModel.HSSFWorkbook 工作簿名 = new
NPOI.HSSF.UserModel.HSSFWorkbook();
2.创建工作表;(创建工作表的前提是要在工作簿下创建)
(也可修改工作表的名称,有两种方法)
NPOI.SS.UserModel.ISheet 工作表名 =工作簿名.CreateSheet(“第一种方法”);
工作簿名.SetSheetName(索引, "第二种方法");
注:第一种是直接在创建工作表的时候,在括号内设置表名;
第二种是通过索引设置表名;
3.创建行;
NPOI.SS.UserModel.IRow 行名 =工作表名.CreateRow(0); 括号内填写下标/索引;
3.1.设置行高
行名.HeightInPoints = 35;
行高 HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍
4.创建单元格;
NPOI.SS.UserModel.ICell 单元格名 = 行名.CreateCell(0); 括号内填写下标/索引;
7.在给单元格设置值之前,还需要设置单元格的样式;
--合并单元格(括号内数字为下标,指从哪一行/列开始合并)
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRang