标签:引用 entity new 解释 根据 现在 fir pre name
本教程可以实现在C#中导出Excel表格,并且设置Excel多级表头的情况。
简单来说,是在MemoryStream中进行的操作。
只提供一部分实现代码,具体需要的api或者方法请自行百度。
1 //引用
2
3 using Aspose.Cells;
4
5 protected MemoryStream ConvertToStream_Report(List<EntityStatisticalSummary> list)
6
7 {
8
9 Workbook workbook = new Workbook();
10
11 Worksheet sheet = workbook.Worksheets[0];
12
13 Cells cells = sheet.Cells;
14
15 //自定义标题样式
16
17 Style styleTitle = workbook.Styles[workbook.Styles.Add()];
18
19 styleTitle.HorizontalAlignment = TextAlignmentType.Center;
20
21 styleTitle.Font.Name = "宋体";
22
23 styleTitle.Font.Size = 18;
24
25 styleTitle.Font.IsBold = true;
这里可以设置多种样式,比如标题/副标题/数据等等,具体引用方法稍后再说。
//设置行数,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);
基础表头画完之后,就可以开始设置内容部分了
//设置内容部分的样式(同标题)
1 for (int i = 0; i < countRow; i++)
2
3 {
4
5 for(int j = 0; j < countCol; j++)
6
7 {
8
9 cells[i, j].SetStyle(styleField);
10
11 }
12
13 }
说一下比较常用的两(三)个属性:
SetColumnWidthPixel:该表格的宽度(像素)
SetColumnWidth(通上)
SetRowHeight该表格的宽度(指的是一个单元格)
如上图1,如果是一级标题,下面包含多个二级标题,那么一级标题的宽度默认为所有二级标题的宽度,即使设置了也不会有作用。
之后就可以导入数据了,大致就是list进行for循环对应单元格写入了。
MemoryStream ms = workbook.SaveToStream();
return ms;
}
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 }
标签:引用 entity new 解释 根据 现在 fir pre name
原文地址:https://www.cnblogs.com/XYYCKL/p/10282782.html