
在公司实际开发中,我们用到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)
电子表格效果如图:
在实际开发中,我们可以根据自己的需要来填充数据
是不是很简单呢,你学会了吗?
评价
排名
27
文章
20
粉丝
11
评论
5
.NET MVC json对象或者json对象数组的序列化和反序列化(二)
剑轩 : 我也觉得ok
.NET MVC json对象或者json对象数组的序列化和反序列化(一)
是伍尚金哇 : nice
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术
是伍尚金哇_v
学会了哇 哈哈 太有用了![[赞]](http://www.tnblog.net/content/static/layui/images/face/56.gif)