C#导出Excel
2021-06-19 10:09
标签:引用 entity new 解释 根据 现在 fir pre name 本教程可以实现在C#中导出Excel表格,并且设置Excel多级表头的情况。 简单来说,是在MemoryStream中进行的操作。 只提供一部分实现代码,具体需要的api或者方法请自行百度。 这里可以设置多种样式,比如标题/副标题/数据等等,具体引用方法稍后再说。 //设置行数,list是根据表格结构拼凑好的数据list int countRow = list.Count; //设置列数,一般根据几个标题设置几列 int countCol = 25; //标题,表格里的首行 因为标题一般比较大,而且横跨多行,这句就是设置这个的。 cells.Merge(0, 0, 1, countCol); //cells.Merge(int firstRow, int firstColumn, int rowNumber, int columnNumber) 开始的第一行、第一列,跨几行几列(可以设置多行标题,就是相对麻烦点,不过可以实现) 比如说大标题这一行,假设左上角为第一行第一列,那么四个参数分别是(1,1,1,9),解释起来就是,从第二行第二列开始画,高一个表格的高度,宽9个表格的宽度,以此类推,交叉型的标题比较麻烦些,耐心测试操作即可。
图1 cells[0, 0].PutValue("****年****表");//写入的值 cells[0, 0].SetStyle(styleTitle);//设置格式(刚刚上面自定义的) cells.SetRowHeight(0, 30); 基础表头画完之后,就可以开始设置内容部分了 //设置内容部分的样式(同标题) 说一下比较常用的两(三)个属性: SetColumnWidthPixel:该表格的宽度(像素) SetColumnWidth(通上) SetRowHeight该表格的宽度(指的是一个单元格) 如上图1,如果是一级标题,下面包含多个二级标题,那么一级标题的宽度默认为所有二级标题的宽度,即使设置了也不会有作用。 之后就可以导入数据了,大致就是list进行for循环对应单元格写入了。 MemoryStream ms = workbook.SaveToStream(); return ms; } C#导出Excel 标签:引用 entity new 解释 根据 现在 fir pre name 原文地址:https://www.cnblogs.com/XYYCKL/p/10282782.html
1 //引用
2
3 using Aspose.Cells;
4
5 protected MemoryStream ConvertToStream_Report(List
1 for (int i = 0; i )
2
3 {
4
5 for(int j = 0; j )
6
7 {
8
9 cells[i, j].SetStyle(styleField);
10
11 }
12
13 }
1 public ActionResult ExportExcel(string XMType, string Year, string Ztdm, string DW, string PC)
2
3 {
4
5 //获取数据
6
7 var data = statistical_summary_bll.GetListAllBySql(XMType, Year, Ztdm, DW, PC).ToList();
8
9 //写入memory stream
10
11 MemoryStream m = ConvertToStream_Report(data);
12
13 byte[] bytes = m.ToArray();
14
15 m.Close();
16
17 var ReportName = "";
18
19 //文件名
20
21 ReportName = "农村公路建设建议计划年度汇总表" + DateTime.Now.ToString("yyyyMMddHHmmssffff");
22
23 //导出
24
25 return this.File(bytes, "application/ms-excel", Server.UrlEncode(ReportName + ".xls"));
26
27 }