zoukankan      html  css  js  c++  java
  • 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。 

  • 相关阅读:
    -1%256的值是多少?
    Glut,程序的基本架构
    剑指offer:数值的整数次方
    剑指offer:二进制中1的个数
    剑指offer:斐波那契数列的应用
    剑指offer:斐波那契数列
    剑指offer:旋转数组中的最小数字
    弱智的grub消除法
    POJ 3126 Prime Path
    HDU 1426 Sudoku Killer
  • 原文地址:https://www.cnblogs.com/happyfish78/p/2800772.html
Copyright © 2011-2022 走看看