在以往的开发经历中,有过一次从数据库表(主从的两张表)导出Excel的需求,并且到处的Excel的主从内容需要可折叠,特此记录下该功能实现。
第一步,使用NPOI组件,通过nuget获取。
第二步,获取需要导出的数据。
第三步,通过NPOI组件创建Excel文件。
HSSFWorkbook workbook = new HSSFWorkbook();
MemoryStream ms = new MemoryStream();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
....
//创建Row
var headerRow = sheet.CreateRow(0);//0-第一行
//创建Cell
var headerCell = headerRow.CreateCell(0);//0-第一个Cell
//往Cell中写入文本
contentCell.SetCellValue("Hello World");
....
//组合行
sheet.GroupRow(0, 10);
sheet.SetRowGroupCollapsed(0, true)//Excel文件默认收缩第一行到第10行
....
//返回文件MemoryStream
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
workbook = null;
return ms;
1
HSSFWorkbook workbook = new HSSFWorkbook();
2
MemoryStream ms = new MemoryStream();
3
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
4
5
....
6
//创建Row
7
var headerRow = sheet.CreateRow(0);//0-第一行
8
//创建Cell
9
var headerCell = headerRow.CreateCell(0);//0-第一个Cell
10
11
//往Cell中写入文本
12
contentCell.SetCellValue("Hello World");
13
14
....
15
//组合行
16
sheet.GroupRow(0, 10);
17
sheet.SetRowGroupCollapsed(0, true)//Excel文件默认收缩第一行到第10行
18
19
....
20
//返回文件MemoryStream
21
workbook.Write(ms);
22
ms.Flush();
23
ms.Position = 0;
24
workbook = null;
25
return ms;