PageOffice封装了一组用于动态输出数据到Excel文档的相关类,所有包含在PageOffice.ExcelWriter 命名空间之中。PageOffice对Excel的赋值操做分两种方式:web
单元格赋值。这个很好理解, sheet.OpenCell("D5"),返回值就是一个Cell对象;编程
针对一个区域赋值。这个区域在PageOffice的概念里就是Table对象,好比:sheet.OpenTable("C9:H15")的返回值就是就是Table对象,这个Table就是”C9:H15”这个区域。下面就针对这两种操做方式来分别介绍。字体
JAVA代码:spa
Workbook wb = new Workbook(); Sheet sheet = wb.openSheet("销售订单"); sheet.openCell("D5").setValue(“北京某某公司”); PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage("poserver.do"); poCtrl1.setWriter(wb); //注意,不要忘记此句代码 poCtrl1.webOpen("{模板文件路径}", OpenModeType.xlsSubmitForm, "");
ASP.NET代码:excel
PageOffice.ExcelWriter.Workbook workBook = new PageOffice.ExcelWriter.Workbook(); PageOffice.ExcelWriter.Sheet sheet = workBook.OpenSheet("销售订单"); sheet.OpenCell("D5").Value = ”北京某某公司”; PageOfficeCtrl1.SetWriter(workBook); //注意,不要忘记此句代码 PageOfficeCtrl1.ServerPage = "pageoffice/server.aspx"; PageOfficeCtrl1.WebOpen("{模板文件路径}", PageOffice.OpenModeType.xlsSubmitForm, "John");
经过上面的代码能够看出,给Excel单元格赋值,首先须要建立Workbook对象,而后经过此对象的OpenSheet方法,获取到Sheet对象,再经过Sheet对象的OpenCell方法就能够获取的Cell对象,进行赋值或其余操做。
Sheet对象有两个方法能够获取到Cell对象:code
JAVA代码:orm
sheet.openCellRC(5,4).setValue("北京某某公司");
ASP.NET代码:server
sheet.OpenCellRC(5,4).Value = "北京某某公司";
设置Cell的样式对象
PageOffice中的Cell对象有不少个设置单元格样式的属性和对象,以下表所示:blog
名称 | 说明 |
---|---|
BackColor | 设置单元格的背景色。 |
Border | 获取边框对象。 |
Font | 获取字体字体。 |
ForeColor | 设置单元格的前景色。 |
Formula | 设置单元格的公式。 |
HorizontalAlignment | 设置单元格的水平对齐方式。 |
NumberFormatLocal | 设置单元格的数据显示格式。 |
Value | 设置单元格的值。 |
VerticalAlignment | 设置单元格的垂直对齐方式。 |
JAVA代码:
Workbook wb = new Workbook(); wb.openSheet("Sheet1").openCell("E16").setBackColor(new Color(0, 128, 128));
ASP.NET代码:
PageOffice.ExcelWriter.Workbook workBook = new PageOffice.ExcelWriter.Workbook(); wb.OpenSheet("Sheet1").OpenCell("E16").BackColor = Color.FromArgb(0, 128, 128);
名称 | 说明 |
---|---|
Bold | 设置字体是否加粗。 |
Italic | 设置字体是否为斜体。 |
Name | 设置字体名称。 |
Size | 设置字体大小。以磅为单位。 |
名称 | 说明 |
---|---|
BorderType | 设置边框的类型。 |
LineColor | 设置边框的颜色。 |
LineStyle | 设置边框的线条样式。 |
Weight | 设置边框的粗细。 |
使用Border对象设置Excel的单元格样式,是能够分别对单元格的上下左右边框单独设置样式的,因此再复杂的表格样式用PageOffice也能够“绘制”出来。PageOffice中的Table对象能够设置Table的Border样式,因此在此不做详细的叙述。
PageOffice开发平台中,针对Excel文件的处理增长了一个“Table”的概念,一个Table指的就是一个区域,例如:sheet.OpenTable("C9:H15")的返回值就是就是Table对象,这个Table所操做的区域就是”C9:H15”。 为什么须要这个Table的概念呢?下面就说明一下使用Table对象的优势。
在实际的项目需求中,经常会须要在Excel 中循环的插入多条数的数据,好比:须要在excel中以B11单元格为起始位置,插入10条包含6个字段的数据,若是使用Cell对象写一个循环程序给单元格赋值会是这样的:
DataTable dt = new DataTable(); for (int i = 0; i < 10; i++) // 10条数据 { sheet.OpenCellRC("B"+(11+i).ToString()).Value = dt.Rows[i][0].ToString(); sheet.OpenCellRC("C"+(11+i).ToString()).Value = dt.Rows[i][1].ToString(); sheet.OpenCellRC("D"+(11+i).ToString()).Value = dt.Rows[i][2].ToString(); sheet.OpenCellRC("E"+(11+i).ToString()).Value = dt.Rows[i][3].ToString(); sheet.OpenCellRC("F"+(11+i).ToString()).Value = dt.Rows[i][4].ToString(); sheet.OpenCellRC("G"+(11+i).ToString()).Value = dt.Rows[i][5].ToString(); }
若是使用Table对象编程,就与操做数据集的概念同样,代码也更容易读懂,代码以下:
DataTable dt = new DataTable(); PageOffice.ExcelWriter.Table table1 = sheet.OpenTable("B11:G20"); for (int i = 0; i < 10; i++) // 10条数据 { for (int j = 0; j <6; j++) // 6个字段 { table1.DataFields[j].Value = dt.Rows[i][j].ToString(); } table1.NextRow(); } table1.Close();
读者确定会认为经过Cell实现这个赋值操做还有一个更好的方法,使用OpenCellRC方法,经过行列号操做会更简单,代码以下:
DataTable dt = new DataTable(); for (int i = 0; i < 10; i++) // 10条数据 { for (int j = 0; j <6; j++) // 6个字段 { sheet.OpenCellRC(11+i,2+j )Value = dt.Rows[i][j].ToString(); } }
状况确实是这样,可是这个代码相对于Table对象的操做来讲有点晦涩,只是看OpenCellRC中的参数是不容易马上知道操做的是哪一个单元格的,还有一个状况是经过Cell赋值没法作到的,那就是在已有的表格模板中插入不定行数的数据。例如:下图中的模板在“合计”以前只有4行空白行,怎么动态插入10条或更多条数据而且数据行的样式也统一呢?
这种状况使用Cell是没法解决问题的,可是前面使用Table给Excel赋值的代码就能够解决这个问题。使用Table赋值的特色是:在赋值的过程当中,若是Table所包含的区域行数不够,那么Table会自动插入行,而且循环重复使用Table区域中各行的样式,直到全部的数据都填充完毕。使用Table对象填充数据的效果以下图所示: