zoukankan      html  css  js  c++  java
  • Excel生成报表之解决方案设置多个单元格区域的格式

    上一篇http://www.cnblogs.com/happyfish78/archive/2012/11/06/2756396.html讲述如何设置单个单元格格式。

    在实际中使用过程中可能更多的需要设置多个单元格格式。其中又可分为连续多个单元格和不连续的单元格。

    一.设置连续多个单元格格式
    首先看下已经设置好的效果图:

    1、微软Excel中设置多个连续单元格

    a.首先在指定单元格区域设置值。
    b.填写好单元格值后,选中这些单元格区域,鼠标右键选择"单元格格式"。
    c.在弹出的窗口中分别选择字体选项(设置字体名称、大小、粗体和颜色)、数值选项(设置要显示的数据格式)和边框选项(设置边框样式和颜色)。
    详见http://www.cnblogs.com/happyfish78/archive/2012/11/06/2756396.html
    d.设置好后点击确定按钮,就能在Excel中看到对连续多个单元格格式设置的效果图。

    2、用Acey.ExcelX代码实现

    //导入命名空间。
    using Acey.ExcelX;

    View Code
     1         /// <summary>
     2         /// 这个例子展示如何设置连续单元格区域的格式。
     3      /// </summary>
     4         public void Sample()
     5         {
     6             //创建工作薄对象。
     7             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
     8             //获取指定索引处的工作表对象。
     9             IWorksheet worksheet = workbook.Worksheets[0];
    10             //初始化二维数组。
    11             object[,] array = { { 10, 50 }, { 20, 60 }, { 30, 80 } };
    12             //导入二维数组的数据到工作表指定的开始位置。
    13             worksheet.ImportArray(array, 2, 2);
    14             //创建指定范围的单元格区域。
    15             IRange range = worksheet.Cells.CreateRange("C3:D5");
    16             //设置该单元格区域的字体属性。
    17             range.CellFormat.Font.Name = "宋体";
    18             range.CellFormat.Font.Bold = true;
    19             range.CellFormat.Font.Size = 16;
    20             range.CellFormat.Font.Color = Color.Blue;
    21             //设置该单元格区域的数据格式。
    22             range.CellFormat.NumberFormat = "0.00";
    23             //设置该单元格区域的边框样式和颜色。
    24             range.SetBorders(BorderMembers.All, LineStyle.Double, Color.Red);
    25 
    26             //保存该工作薄为指定类型。
    27             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);
    28         }

    这里导入数据使用方法 worksheet.ImportArray(array, 2, 2);导入二维数组的数据到工作表指定的开始位置,简化了一个单元格数据的填写工作。
    对连续的多个单元格,我们首先创建了单元格区域对象IRange range = worksheet.Cells.CreateRange("C3:D5");。创建了这个对象后我们可以对

    这个单元格区域的格式进行设置,如:range.CellFormat.Font.Name = "宋体";对单元格区域设置字体,就会对单元格区域中所包含的每个单元格进行设置

    字体的操作。简化了要对每个单元格格式进行设置的工作。

    二、设置不连续的多个单元格格式。
    如果遇到要设置的单元格不连续,但是它们却又相同的格式。见图:

    1、微软Excel中设置多个不连续单元格
    a.第一种方法:按住Ctrl键,对要设置的单元格进行选中,选好多个单元格后,点击鼠标右键选择"单元格格式",进行字体、数值和边框的配置即可。
    b.第二种方法:首先设置其中一个单元格的格式,然后用Excel的格式刷,复制该单元格的格式并应用到其他单元格中。

    2、用Acey.ExcelX代码实现

    //导入命名空间。
    using Acey.ExcelX;

    View Code
     1        /// <summary>
     2        ///  这个例子展示如何设置不连续单元格区域的格式(不连续区域有相同的格式)。
     3      /// </summary>
     4         public void Sample()
     5         {
     6             //创建工作薄对象。
     7             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
     8             //获取指定索引处的工作表对象。
     9             IWorksheet worksheet = workbook.Worksheets[0];
    10             //获取指定名称的单元格对象。
    11             ICell cell = worksheet.Cells["C3"];
    12             //设置单元格值。
    13             cell.Value = 10;
    14             //设置单元格格式的字体属性。
    15             cell.CellFormat.Font.Name = "宋体";
    16             cell.CellFormat.Font.Size = 16;
    17             cell.CellFormat.Font.Bold = true;
    18             cell.CellFormat.Font.Color = Color.Blue;
    19 
    20             //设置单元格格式的数据格式。
    21             cell.CellFormat.NumberFormat = "0.00";
    22             //设置单元格格式的边框样式和颜色。
    23             cell.SetBorders(BorderMembers.All, LineStyle.Double, Color.Red);
    24 
    25             ICell destCell = worksheet.Cells["D4"];
    26             destCell.Value = 20;
    27             //只复制指定单元格对象的格式。
    28             destCell.CopyFormat(cell);
    29 
    30             destCell = worksheet.Cells["F6"];
    31             destCell.Value = 30;
    32             //只复制指定单元格对象的格式。
    33             destCell.CopyFormat(cell);
    34 
    35             //保存该工作薄为指定类型。
    36             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);
    37         }

    代码实现了Excel中第二种方法,首先设置其中一个单元格的格式,对另外单元格格式设置用方法:destCell.CopyFormat(cell);该方法只复制指定单元格对象的格式。如果既要复制数据又要复制格式,可以用Copy的方法。用destCell.CopyFormat(cell);方法简化对每个单元格分别进行重复的格式设置。

    三、总结

    无需安装微软Excel,用代码也能很轻松实现单元格格式效果。 下载最新版本到www.aceyoffice.com。如果您想对Acey.ExcelX有进一步了解,在网站下载帮助和Demo。

  • 相关阅读:
    centos yum安装报错could not resolve host: mirrorlist.centos.org
    feign拦截器和解码器
    git error:invalid path
    Codeforces Round #689 (Div. 2)
    RSA加解密,Java和C#互通
    C# WinForm遍历窗体控件的3种方法
    vs2019如何自动生成有下划线前缀的字段名?
    C# EF Core 后端代码已定义的用户实体,如何扩展字段?
    SQL Server 查询分析及优化方法
    SQL Server 新增函数大全(各版本)
  • 原文地址:https://www.cnblogs.com/happyfish78/p/2758214.html
Copyright © 2011-2022 走看看