openTable
打开指定的单元格区域,并返回 ExcelTableWriter 对象。
在PageOffice中,我们把Excel工作表上的任意一块连续的单元格区域定义为一个Table对象。如果您需要操作一个单元格区域,您就应该使用 ExcelTableWriter 对象。
如果要输出到表格里的实际数据行数超过了 RangeAddress 指定的单元格区域行数,Table 将会自动扩展单元格行数到实际大小,并且给新的单元格数据行应用 RangeAddress 指定的单元格区域的格式。如果您不希望表格按实际数据行数自动扩展,而维持 RangeAddress 指定的大小,您需要调用 SheetWriter.openTable(string, bool) 方法。
语法1:
public ExcelTableWriter openTable(java.lang.String rangeAddress)
throws java.lang.Exception
参数:
rangeAddress
- Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。
注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。
返回:
返回 ExcelTableWriter 对象。
抛出:
java.lang.Exception
示例:
示例代码 1: 下面的示例展示了如何调用 OpenTable 方法在一个已存在格式的空表上输出数据。
WorkbookWriter wbWriter = new WorkbookWriter();
SheetWriter sheetWriter1 = wbWriter.openSheet("sheet1");
TableWriter tableWriter1 = sheetWriter1.openTable("B5:F10");
// 输出数据到表格
Random r = new Random();
for (int j = 0; j < 4; j++){
for (int i = 0; i < tableWriter1.getDataFields().size(); i++){
tableWriter1.getDataFields().get(i).setValue(String.valueOf(r.nextInt(100))); // 模拟来自数据库的数据
}
tableWriter1.nextRow();
}
tableWriter1.close(); // 必须
poCtrl1.setWriter(wbWriter);
poCtrl1.webOpen("doc/test.xls", OpenModeType.xlsReadOnly, "张三");
示例代码 2: 下面的示例展示了如何调用 OpenTable 方法在一个空白工作表上画表及输出其数据,同时也展示了如何对超出范围的数据进行动态报警。
WorkbookWriter wbWriter = new WorkbookWriter();
SheetWriter sheetWriter1 = wbWriter.openSheet("sheet1");
TableWriter tableWriter1 = sheetWriter1.openTable("B5:F10");
// 画表格线、设置表格颜色
tableWriter1.setRowHeight(20);
tableWriter1.setColumnWidth(14.25);
tableWriter1.getBorder().setBorderType(XlBorderType.FullGrid);
tableWriter1.getBorder().setLineStyle(XlBorderLineStyle.Continuous);
tableWriter1.getBorder().setWeight(XlBorderWeight.Thin);
tableWriter1.getBorder().setLineColor(Color.gray);
tableWriter1.setBackColor(Color.decode("#E6E6E6"));
// 画表头
sheetWriter1.openTable("B5:F5").setBackColor(Color.blue);
sheetWriter1.openTable("B5:F5").setForeColor(Color.white);
tableWriter1.getDataFields.get(0).setValue("字段标题1");
tableWriter1.getDataFields.get(1).setValue("字段标题2");
tableWriter1.getDataFields.get(2).setValue("字段标题3");
tableWriter1.getDataFields.get(3).setValue("字段标题4");
tableWriter1.getDataFields.get(4).setValue("字段标题5");
tableWriter1.nextRow();
// 输出数据到表格
Random r = new Random();
for (int j = 0; j < 4; j++){
for (int i = 0; i < tableWriter1.getDataFields().size(); i++){
int iValue = r.nextInt(1000);
tableWriter1.getDataFields().get(i).setValue(String.valueOf(iValue)); // 模拟来自数据库的数据
if (iValue > 800){ // 如果单元格的值超过900,就设置当前单元格的颜色给予警示。
tableWriter1.getDataFields().get(i).setBackColor(Color.red);
tableWriter1.getDataFields().get(i).setForeColor(Color.yellow);
}
}
tableWriter1.nextRow();
}
// 画表尾,并计算合计值
sheetWriter1.openTable("B10:F10").setBackColor(Color.orange);
tableWriter1.getDataFields().get(0).setValue("合计");
// 这里的合计值可以开发者自己计算,也可以利用Excel强大的公式功能,这样会非常简便
tableWriter1.getDataFields().get(4).setFormula = "sum(F6:F9)";
tableWriter1.nextRow();
tableWriter1.close(); // 必须
// 将 C10:E10 指定的单元格区域合并成一个单元格
sheetWriter1.openTable("C10:E10").merge();
poCtrl1.setWriter(wbWriter);
poCtrl1.webOpen("doc/test.xls", OpenModeType.xlsReadOnly, "张三");
语法2:
public ExcelTableWriter openTable(java.lang.String rangeAddress,
boolean autoIncrease)
throws java.lang.Exception
参数:
rangeAddress
- Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。
注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。
autoIncrease
- 可选参数。默认值为 true。如果值为false,表格不会按实际数据行数自动扩展,而是维持 RangeAddress 指定的大小,多余的数据行将被抛弃。
返回:
返回 ExcelTableWriter 对象。
抛出:
java.lang.Exception