在使用软件的时候,有时会需要将其中的表格数据导出到本地Excel表格。而这个功能要怎么实现呢?接下来的内容可能会有所解惑。

这里我用一个学生信息的表格为例来讲解。

导出数据到Excel表格

先是获取表格多条件查询的条件。为什么要获取到条件,因为导出的数据并不是页面上我们看到的表格中已出现的数据。而是获取到表格中数据相同的查询条件,再次从数据库查出数据。数据有了,Excel表格从何来,自己建就好了。

先创建工作簿      

HSSFWorkbook excelBook = new HSSFWorkbook();

 

创建工作表   

NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet("考生信息");

 

创建表头行

NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);

 

设置表头,以第一个为例。

row1.CreateCell(0).SetCellValue("学号");

 

表格建好了,接下来就是添加数据了。

ListStudent为查询好的数据。

For循环listStudent数据条数

for(int i = 0; i < listStudent.Count(); i++){}

 

循环中按数据的索引加一(加上表头)为行数依次创建所在行。

NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i+1);

 

再按照表头依次为各列添加数据,以第一列为例。

rowTemp.CreateCell(0).SetCellValue(listStudent[i].StudentNumber);

 

表格做好了,剩下的问题就是如何导出了。

先转化为内存流

rowTemp.CreateCell(0).SetCellValue(listStudent[i].StudentNumber);

 

将Excel文件写入内存流

excelBook.Write(ExcelStream);

 

还要设置一下文件读取指针的位置

ExcelStream.Seek(0, SeekOrigin.Begin);//设置在文件开头,偏移量为零

 

最后输出,

return File(ExcelStream, "application/vnd.ms-excel", fileName);

application/vnd.ms-excel为Excel表格扩展名’.xls’的EIEM类型;

fileName为文件名称。额,似乎漏了什么。

在输出前设置文件名,加上时间。

string fileName = "考生信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";

 

经过如此详细步骤的解释,应该都能看懂。如有不明词汇,还请百度。

相关文章: