分类:
.NET MVC
在公司实际开发中,我们用到Excel文件的地方很多,下面我来讲解一下如何创建
比如我们做一个如下图的报表:

前台页面设计:
@{
ViewBag.Title = "Index";
}
<a href="/Excel/Down2">下载</a>后台代码:
public void Down2() {
//创建Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
//创建表
HSSFSheet sheet = workbook.CreateSheet("业绩表") as HSSFSheet;
//创建行
HSSFRow row1 = sheet.CreateRow(0) as HSSFRow;
row1.Height = 600;
HSSFRow row2 = sheet.CreateRow(1) as HSSFRow;
row2.Height = 600;
HSSFRow row3 = sheet.CreateRow(2) as HSSFRow;
row3.Height = 600;
for (int i = 0; i < 8; i++)
{
row1.CreateCell(i);
row2.CreateCell(i);
row3.CreateCell(i);
//设置列宽
sheet.SetColumnWidth(i, 1000*3);
}
//合并前四列
for (int i = 0; i < 4; i++)
{
sheet.AddMergedRegion(new NPOI.SS.Util.Region(0, i, 2, i));
}
//合并第一行5列到8列
sheet.AddMergedRegion(new NPOI.SS.Util.Region(0, 4, 0, 7));
//合并第5列2到3行
sheet.AddMergedRegion(new NPOI.SS.Util.Region(1, 4, 2, 4));
//合并第6列2到3行
sheet.AddMergedRegion(new NPOI.SS.Util.Region(1, 5, 2, 5));
//合并第二行7、8列
sheet.AddMergedRegion(new NPOI.SS.Util.Region(1, 6, 1, 7));
//水平垂直居中样式
HSSFCellStyle cellStyle = workbook.CreateCellStyle() as HSSFCellStyle;
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
row1.GetCell(0).SetCellValue("编码");
row1.GetCell(0).CellStyle = cellStyle;
row1.GetCell(1).SetCellValue("月度");
row1.GetCell(1).CellStyle = cellStyle;
row1.GetCell(2).SetCellValue("工资");
row1.GetCell(2).CellStyle = cellStyle;
row1.GetCell(3).SetCellValue("绩效");
row1.GetCell(3).CellStyle = cellStyle;
row1.GetCell(4).SetCellValue("8月经营性指标");
row1.GetCell(4).CellStyle = cellStyle;
row2.GetCell(4).SetCellValue("在职人数");
row2.GetCell(4).CellStyle = cellStyle;
row2.GetCell(5).SetCellValue("新增人数");
row2.GetCell(5).CellStyle = cellStyle;
row2.GetCell(6).SetCellValue("实际销售为准");
row2.GetCell(6).CellStyle = cellStyle;
row3.GetCell(6).SetCellValue("人力");
row3.GetCell(6).CellStyle = cellStyle;
row3.GetCell(7).SetCellValue("出单率");
row3.GetCell(7).CellStyle = cellStyle;
//测试数据
for (int i = 3; i < 12; i++)
{
//创建行
HSSFRow sub = sheet.CreateRow(i) as HSSFRow;
//创建列
sub.CreateCell(0).SetCellValue("aa" + i);
sub.CreateCell(1).SetCellValue("bb" + i);
sub.CreateCell(2).SetCellValue("cc" + i);
sub.CreateCell(3).SetCellValue("dd" + i);
sub.CreateCell(4).SetCellValue("ee" + i);
sub.CreateCell(5).SetCellValue("ff" + i);
sub.CreateCell(6).SetCellValue("hh" + i);
sub.CreateCell(7).SetCellValue("ii" + i);
}
//内存流
MemoryStream memory = new MemoryStream();
workbook.Write(memory);
Response.AddHeader("Content-Disposition", "attachment;filename=公司业绩.xls");
Response.BinaryWrite(memory.ToArray());
}下载注意事项:
当我们想要点击某个按钮下载Excel文件时,我们在结束时加上
//内存流
MemoryStream memory = new MemoryStream();
workbook.Write(memory);
Response.AddHeader("Content-Disposition", "attachment;filename=公司业绩.xls");
Response.BinaryWrite(memory.ToArray());
说明:我们需要把生成的文件通过文件流转换正二进制数组,这样我们才可以下载
然后我们点击下载就可以下载一个Excel电子表(公司业绩.xls)
电子表格效果如图:

在实际开发中,我们可以根据自己的需要来填充数据
是不是很简单呢,你学会了吗?

评价
