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。

原文地址:https://www.cnblogs.com/happyfish78/p/2758214.html