zoukankan      html  css  js  c++  java
  • AceyOffice教程报表之解决方案(二)

    项目中生成报表,不免涉及到生成产品列表、员工列表、客户列表等各种列表,本文介绍如何更简单的生成列表。

    假如我们要生成产品列表,先看下要生成的Excel文件的模板,如图:

    在Excel中要生成这样的列表,需要人工一个一个单元格的输入值和设置单元格格式。如果产品比较多,工作量比较大。

    现在我们看下Acey.ExcelX是如何解决这样的问题。

    对于程序员来说,我们更熟悉面向对象中的数组和DataTable。我们也深知这样的理念,所以Acey.ExcelX的IWorksheet接口

    提供了ImportArray和ImportDataTable方法。那么我们看下如何通过这2个办法来快速生成列表报表的。

    方法一:使用ImportArray方法

    View Code
     1 public void Sample()
     2         {
     3             //创建工作薄对象。
     4             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
     5             //获取工作薄中默认样式。
     6             IStyle defaultStyle = workbook.NormalStyle;
     7             //设置工作薄中默认样式的字体。
     8             defaultStyle.Font.Name = "Times New Roman";
     9             defaultStyle.Font.Size = 10;
    10             //获取指定索引的工作表。
    11             IWorksheet worksheet = workbook.Worksheets[0];
    12             //获取指定行和列索引的单元格对象。
    13             ICell cell = worksheet.Cells[0, 0];
    14             //设置单元格值。
    15             cell.Value = "Alphabetical List of Products";
    16             //设置单元格格式的字体。
    17             cell.CellFormat.Font.Size = 12;
    18             cell.CellFormat.Font.Color = Color.Blue;
    19 
    20             //获取指定行和列索引的单元格对象。
    21             cell = worksheet.Cells[1, 0];
    22             //设置单元格值。
    23             cell.Value = new DateTime(2012, 12, 18);
    24             //设置单元格格式的字体颜色。
    25             cell.CellFormat.Font.Color = Color.Blue;
    26             //定义二维数组。
    27             object[,] array = new object[10, 4] 
    28                {{"Product Name", "Category Name", "Quantity Per Unit","Units In Stock"},
    29                 {"Aniseed Syrup", "Condiments", "12 - 550 ml bottles", 13},
    30                 {"Boston Crab Meat", "Seafood", "24 - 4 oz tins", 123},
    31                 {"Camembert Pierrot", "Dairy Products","15 - 300 g rounds", 19},
    32                 {"Carnarvon Tigers", "Seafood", "16 kg pkg.", 42},
    33                 {"Chai","Beverages","10 boxes x 20 bags",39},
    34                 {"Chang", "Beverages", "24 - 12 oz bottles", 17},
    35                 {"Chartreuse verte", "Beverages", "750 cc per bottle", 69},
    36                 {"Chef Anton's Cajun Seasoning", "Condiments", "48 - 6 oz jars", 53},
    37                 {"Chocolade", "Confections", "10 pkgs.", 15}};
    38             //导入二维数组到工作表指定的位置。
    39             worksheet.ImportArray(array, 4, 0);
    40             //插入行。
    41             worksheet.InsertRow(5);
    42             //创建单元格区域对象。
    43             IRange range = worksheet.Cells.CreateRange("B5:E5");
    44             //设置该单元格区域的字体属性。
    45             range.CellFormat.Font.Size = 12;
    46             range.CellFormat.Font.Bold = true;
    47             //保存该工作薄为指定类型。
    48             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);
    49         }

    用ImportArray方法前,先初定义并始化该二维数组,然后用 worksheet.ImportArray(array, 4, 0);将该二维数组的值从第5行第1列的位置开始写入。

    方法二:使用DataTable方法

    View Code
     1 public void Sample()
     2         {
     3             //创建工作薄对象。
     4             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
     5             //获取工作薄中默认样式。
     6             IStyle defaultStyle = workbook.NormalStyle;
     7             //设置工作薄中默认样式的字体。
     8             defaultStyle.Font.Name = "Times New Roman";
     9             defaultStyle.Font.Size = 10;
    10             //获取指定索引的工作表。
    11             IWorksheet worksheet = workbook.Worksheets[0];
    12             //获取指定行和列索引的单元格对象。
    13             ICell cell = worksheet.Cells[0, 0];
    14             //设置单元格值。
    15             cell.Value = "Alphabetical List of Products";
    16             //设置单元格格式的字体。
    17             cell.CellFormat.Font.Size = 12;
    18             cell.CellFormat.Font.Color = Color.Blue;
    19 
    20             //获取指定行和列索引的单元格对象。
    21             cell = worksheet.Cells[1, 0];
    22             //设置单元格值。
    23             cell.Value = new DateTime(2012, 12, 18);
    24             //设置单元格格式的字体颜色。
    25             cell.CellFormat.Font.Color = Color.Blue;
    26 
    27             System.Data.DataTable table = new DataTable();
    28             table.Columns.Add("Product Name", typeof(string));
    29             table.Columns.Add("Category Name", typeof(string));
    30             table.Columns.Add("Quantity Per Unit", typeof(string));
    31             table.Columns.Add("Units In Stock", typeof(int));
    32             table.Rows.Add(new object[] {"Aniseed Syrup", "Condiments", "12 - 550 ml bottles", 13});
    33             table.Rows.Add(new object[] {"Boston Crab Meat", "Seafood", "24 - 4 oz tins", 123});
    34             table.Rows.Add(new object[] {"Camembert Pierrot", "Dairy Products","15 - 300 g rounds", 19});
    35             table.Rows.Add(new object[] {"Carnarvon Tigers", "Seafood", "16 kg pkg.", 42});
    36             table.Rows.Add(new object[] {"Chai","Beverages","10 boxes x 20 bags",39});
    37             table.Rows.Add(new object[] {"Chang", "Beverages", "24 - 12 oz bottles", 17});
    38             table.Rows.Add(new object[] {"Chartreuse verte", "Beverages", "750 cc per bottle", 69});
    39             table.Rows.Add(new object[] {"Chef Anton's Cajun Seasoning", "Condiments", "48 - 6 oz jars", 53});
    40             table.Rows.Add(new object[] {"Chocolade", "Confections", "10 pkgs.", 15});
    41             //导入DataTable到工作表指定的位置。
    42             worksheet.ImportDataTable(table, true, 4, 0);
    43             //插入行。
    44             worksheet.InsertRow(5);
    45             //创建单元格区域对象。
    46             IRange range = worksheet.Cells.CreateRange("B5:E5");
    47             //设置该单元格区域的字体属性。
    48             range.CellFormat.Font.Size = 12;
    49             range.CellFormat.Font.Bold = true;
    50             //保存该工作薄为指定类型。
    51             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);
    52         }

    用ImportDataTable方法前,先初始化DataTable对象,然后用worksheet.ImportDataTable(table, true, 4, 0);方法将该DataTable中包含的值写入到第5行第1列的位置,其中第二个参数true,表示连同DataTable的FieldName一起写入。如果不需要设置为false即可。

    本文中描述了Acey.ExcelX的IWorksheet接口的ImportArray和ImportDataTable方法,能快速导入大量数据到工作表中,Acey.ExcelX还提供很多类似的方法和属性来帮助用户

    更简单更快的生成Excel报表。

    Acey.ExcelX组件专注于为用户提供更好的解决方案。

  • 相关阅读:
    高性能MySQL--创建高性能的索引
    error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
    高性能MySQL--MySQL数据类型介绍和最优数据类型选择
    Elasticsearch入门和查询语法分析(ik中文分词)
    裁员浪潮,互联网人该何去何从?
    django+mysql的使用
    很详细的Django入门详解
    (2021年1月5日亲测有效)最新PyCharm 安装教程&激活破解,Pycharm激活,Pycharm破解
    (2021年1月5日更新)!最新的pycharm永久激活办法,亲测有效
    太干了!一张图整理了 Python 所有内置异常
  • 原文地址:https://www.cnblogs.com/happyfish78/p/2870796.html
Copyright © 2011-2022 走看看