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;

就能实现同样的效果。

完整代码如下:

View Code
 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。 

posted @ 2012-12-04 09:45  AceyOffice  阅读(597)  评论(0编辑  收藏  举报