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

results matching ""

    No results matching ""