Excel生成报表之解决方案--组合的用法
首先看在组合在Excel报表中的应用,举个简单的例子,如图:
其中用到组合,这个是展开组合详细的效果,当隐藏组合详细时,效果如下:
组合在报表中应用非常广泛,下面让我们了解下用Acey.ExcelX组件如何实现该图中组合的效果吧。
首先导入命名空间
using Acey.ExcelX;
1 //创建工作薄。 2 IWorkbook workbook = ExcelxApplication.CreateWorkbook(); 3 //获取指定索引的工作表。 4 IWorksheet worksheet = workbook.Worksheets[0]; 5 //初始化数组。 6 object[,] objArray = new object[3, 3] {{"水果名称", "单价", "重量"}, 7 {"苹果", 3.5, 2}, {"西瓜", 3, 10}}; 8 //导入数组到工作表中指定的开始位置。 9 worksheet.ImportArray(objArray, 1, 0); 10 11 //获取指定名称的单元格对象。 12 ICell cell = worksheet.Cells["A5"]; 13 //设置单元格的值。 14 cell.Value = "总价"; 15 //获取指定名称的单元格对象。 16 cell = worksheet.Cells["C5"]; 17 //设置单元格的公式。 18 cell.Formula = "=B3*C3+B4*C4"; 19 //组合指定开始行和结束行。 20 worksheet.GroupRows(1, 3); 21 22 //保存该工作薄为指定类型。 23 string xlsFile = @"d:\GroupRows.xls"; 24 workbook.SaveAs(xlsFile, FileFormat.Excel97To2003);
只要上述简单的代码就能实现图的效果。
具体实现的步骤如下:
1.填充数据到电子表格中:在代码中先初始化数组,导入数组的数据到指定的表格中开始位置。
优点:这样做的大大简化了要一个一个单元格填写数据的工作量。
2.组合行:通过方法 worksheet.GroupRows(1, 3);指定要组合的开始行索引和结束行索引,就能轻松实现组合行的效果。
Excel组合行时,默认明细数据的方向为明细数据的下方。如要明细数据的方向为明细数据的上方需要如何做?
Excel中选择菜单Data>Group and Outline> Settings,在弹出的Settings中设置:
取消对Summary rows below detail的选择即可。确定后效果如下:
用代码,只需要加入
//获取描述工作表中分级显示的设置。
IOutline outline = worksheet.Outline;
//获取或设置明细数据的上方。
outline.SummaryRow = SummaryRow.SummaryAbove;
就能实现同样的效果。
完整代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public void Sample() 2 { 3 //创建工作薄。 4 IWorkbook workbook = ExcelxApplication.CreateWorkbook(); 5 //获取指定索引的工作表。 6 IWorksheet worksheet = workbook.Worksheets[0]; 7 //初始化数组。 8 object[,] objArray = new object[3, 3] {{"水果名称", "单价", "重量"}, 9 {"苹果", 3.5, 2}, {"西瓜", 3, 10}}; 10 //导入数组到工作表中指定的开始位置。 11 worksheet.ImportArray(objArray, 1, 0); 12 13 //获取指定名称的单元格对象。 14 ICell cell = worksheet.Cells["A5"]; 15 //设置单元格的值。 16 cell.Value = "总价"; 17 //获取指定名称的单元格对象。 18 cell = worksheet.Cells["C5"]; 19 //设置单元格的公式。 20 cell.Formula = "=B3*C3+B4*C4"; 21 22 //组合指定开始行和结束行。 23 worksheet.GroupRows(1, 3); 24 25 //获取描述工作表中分级显示的设置。 26 IOutline outline = worksheet.Outline; 27 //获取或设置明细数据的上方。 28 outline.SummaryRow = SummaryRow.SummaryAbove; 29 30 //保存该工作薄为指定类型。 31 string xlsFile = @"d:\GroupRows.xls"; 32 workbook.SaveAs(xlsFile, FileFormat.Excel97To2003); 33 }
在设置Outline中使用枚举更能清晰的表达其含义。如果设置要组合列的方向,只要设置outline.SummaryColumn = SummaryColumn.SummaryOnLeft;即可。
总结
无需安装微软Excel,用组件Acey.ExcelX就能轻松实现各种组合效果。 下载最新版本(已支持中文版)到www.aceyoffice.com。如果您想对Acey.ExcelX有进一步了解,在网站下载帮助和Demo。