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;
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;
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。