使用Aspose.Cells组件生成Excel文件实例
生成带表头的excel文件,格式如下显示。
当然更复杂的一些也可以通过 合并单元格的方法 public void merge(int firstrow, int firstcolumn, int totalrows, int totalcolumns)来实现。
实现方式:
1. 首先,需要添加对"aspose.cells.dll"的引用。
2. 实现代码如下:
//新建工作簿
workbook workbook = new workbook(); //工作簿
worksheet sheet = workbook.worksheets[0]; //工作表
cells cells = sheet.cells;//单元格
style style = workbook.styles[workbook.styles.add()];//新增样式
#region 表头
//标题
style.horizontalalignment = textalignmenttype.center;//文字居中
style.font.name = "宋体";//文字字体
style.font.size = 18;//文字大小
style.font.isbold = true;//粗体
cells.merge(0, 0, 1, 12); //合并单元格
cells[0, 0].putvalue("标准化工作意见建议汇总表"); //填写内容
cells[0, 0].setstyle(style); //给单元格关联样式
cells.setrowheight(0, 28); //设置行高
//发布时间
style.horizontalalignment = textalignmenttype.left;
style.font.size = 11;
style.font.isbold = false;
cells.merge(1, 0, 1, 7);
cells[1, 0].putvalue(string.format("发布起止时间:{0}至{1}",datetime.now.adddays(-1).tostring("yyyy年mm月dd日"),datetime.now.tostring("yyyy年mm月dd日")));
cells[1, 0].setstyle(style);
cells.setrowheight(1, 20);
//统计时间
style.horizontalalignment = textalignmenttype.right;
style.font.size = 11;
style.font.isbold = false;
cells.merge(1, 7, 1, 5);
cells[1, 7].putvalue(string.format("统计时间:{0}", datetime.now.tostring("yyyy年mm月dd日")));
cells[1, 7].setstyle(style);
cells.setrowheight(1, 20);
#endregion
#region 表格
#region 表格标题行
//序号
style.horizontalalignment = textalignmenttype.center;
cells[2, 0].putvalue("序号");
cells[2, 0].setstyle(style);
cells.setrowheight(2, 20);
cells.setcolumnwidthpixel(0, 38);
//建议时间
cells[2, 1].putvalue("建议时间");
cells[2, 1].setstyle(style);
cells.setcolumnwidthpixel(1, 77);
//建议部门
cells[2, 2].putvalue("建议部门");
cells[2, 2].setstyle(style);
cells.setcolumnwidthpixel(2, 107);
//建 议 人
cells[2, 3].putvalue("建 议 人");
cells[2, 3].setstyle(style);
cells.setcolumnwidthpixel(3, 69);
//类 别
cells[2, 4].putvalue("类 别");
cells[2, 4].setstyle(style);
cells.setcolumnwidthpixel(4, 71);
//业务种类
cells[2, 5].putvalue("业务种类");
cells[2, 5].setstyle(style);
cells.setcolumnwidthpixel(5, 71);
//标准名称
cells[2, 6].putvalue("标准名称");
cells[2, 6].setstyle(style);
cells.setcolumnwidthpixel(6, 114);
//标准章、条编号
cells[2, 7].putvalue("标准章、条编号");
cells[2, 7].setstyle(style);
cells.setcolumnwidthpixel(7, 104);
//意见建议
cells[2, 8].putvalue("意见建议");
cells[2, 8].setstyle(style);
cells.setcolumnwidthpixel(8, 255);
//处理部门
cells[2, 9].putvalue("处理部门");
cells[2, 9].setstyle(style);
cells.setcolumnwidthpixel(9, 72);
//处理进度
cells[2, 10].putvalue("处理进度");
cells[2, 10].setstyle(style);
cells.setcolumnwidthpixel(10, 72);
//备注
cells[2, 11].putvalue("备注");
cells[2, 11].setstyle(style);
cells.setcolumnwidthpixel(11, 255);
#endregion
#endregion
system.io.memorystream ms = workbook.savetostream();//生成数据流
byte[] bt = ms.toarray();
workbook.save(@"e:\test.xls");//保存到硬盘
}
3. 生成好的excel可以保存到磁盘,也可以在web页面上通过流的方式来下载。
//下载
system.io.memorystream ms = workbook.savetostream();//生成数据流
byte[] bt = ms.toarray();
string filename = "标准化工作意见建议汇总表" + datetime.now.tostring("yyyymmddhhmmss") + ".xls";//客户端保存的文件名
//以字符流的形式下载文件
response.contenttype = "application/vnd.ms-excel";
//通知浏览器下载文件而不是打开
response.addheader("content-disposition", "attachment; filename=" + httputility.urlencode(filename, system.text.encoding.utf8));
response.binarywrite(bt);
response.flush();
response.end();