com.zhuozhengsoft.pageoffice.excelwriter
类 Sheet

java.lang.Object
  继承者 com.zhuozhengsoft.pageoffice.excelwriter.Sheet

public class Sheet
extends java.lang.Object

Sheet 类,代表Excel中定义的工作表对象。

您只能通过调用Workbook.openSheet(String) 方法获取 Sheet 对象。

版本:
2.0
作者:
北京卓正志远软件有限公司

方法摘要
 java.lang.String getName()
          获取 Sheet 的名称。
 Cell openCell(java.lang.String cellAddress)
          打开指定的单元格,并返回 Cell 对象。
 Cell openCellByDefinedName(java.lang.String definedName)
          打开具有指定名称(Excel中定义的名称)的单元格,并返回 Cell 对象。
 Cell openCellRC(int row, int col)
          打开指定的单元格,并返回 Cell 对象。
 Table openTable(java.lang.String rangeAddress)
          打开指定的单元格区域,并返回 Table 对象。
 Table openTable(java.lang.String rangeAddress, boolean autoIncrease)
          打开指定的单元格区域,并返回 Table 对象。
 Table openTableByDefinedName(java.lang.String definedName, int rowCount, int colCount)
          打开具有指定名称(Excel中定义的名称)的单元格区域,并返回 Table 对象。
 Table openTableByDefinedName(java.lang.String definedName, int rowCount, int colCount, boolean autoIncrease)
          打开具有指定名称(Excel中定义的名称)的单元格区域,并返回 Table 对象。
 void setAllowAdjustRC(boolean value)
          设置当工作表只读时,是否允许用户手动调整行列。
 void setAutoFit(boolean value)
          设置工作表中的单元格是否自动显示完全值。
 void setReadOnly(boolean value)
          设置工作表是否只读。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getName

public java.lang.String getName()
                         throws java.io.IOException
获取 Sheet 的名称。

这里返回的是打开当前Sheet时使用的Sheet名称。

抛出:
java.io.IOException

setReadOnly

public void setReadOnly(boolean value)
                 throws java.io.IOException
设置工作表是否只读。

如果值为true,处于可编辑的Sheet将变成只读。如果值为false,处于只读的Sheet将变成可编辑。

只有当文档打开模式是 OpenModeType.xlsSubmitForm 时,ReadOnly 属性才有效。默认值为 true。

抛出:
java.io.IOException

setAutoFit

public void setAutoFit(boolean value)
                throws java.io.IOException
设置工作表中的单元格是否自动显示完全值。

如果值为true,工作表中的单元格将自动扩展显示完全值。

抛出:
java.io.IOException

setAllowAdjustRC

public void setAllowAdjustRC(boolean value)
                      throws java.io.IOException
设置当工作表只读时,是否允许用户手动调整行列。

如果值为true,允许用户手动调整行列。

抛出:
java.io.IOException

openCell

public Cell openCell(java.lang.String cellAddress)
              throws java.lang.Exception
打开指定的单元格,并返回 Cell 对象。

下面的示例展示了如何调用 openCell 方法。

 Workbook wb = new Workbook();
 Sheet sheet1 = wb.openSheet("sheet1");
 
 // 输出数据到单元格,并且设置单元格的颜色。
 sheet1.openCell("C2").setValue("卓正软件");
 sheet1.openCell("C2").setBackColor(Color.red);
 sheet1.openCell("C2").setForeColor(Color.yellow);
 
 sheet1.openCellRC(2, 4).setValue("PageOffice");
 
 sheet1.openCell("B5").setValue("6");
 sheet1.openCell("C5").setValue("3");
 sheet1.openCell("D5").setFormula("B5+C5");
 
 poCtrl1.setServerPage("poserver.do"); //此行必须
 poCtrl1.setWriter(wb);
 poCtrl1.webOpen("doc/test.xls", OpenModeType.xlsReadOnly, "张三");
 poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须
 

参数:
cellAddress - 单元格引用字符串。例如:"A1"。

注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入CellAddress参数时注意不要超出最大行列数限制。

返回:
返回 Cell 对象。
抛出:
java.lang.Exception

openCellRC

public Cell openCellRC(int row,
                       int col)
                throws java.lang.Exception
打开指定的单元格,并返回 Cell 对象。

注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入行列号参数时注意不要超出最大行列数限制。

参数:
row - 行号。从"1"开始。
col - 列号。从"1"开始。
返回:
返回 Cell 对象。
抛出:
java.lang.Exception

openCellByDefinedName

public Cell openCellByDefinedName(java.lang.String definedName)
                           throws java.lang.Exception
打开具有指定名称(Excel中定义的名称)的单元格,并返回 Cell 对象。

如果指定的名称在当前工作表中不存在,则对该 Cell 对象的所有操作将全部被忽略。

参数:
definedName - 在Excel中定义的名称,可以是全局名称,也可以是局部名称。定义名称时请选择单个单元格,如果选择的是单元格区域,那么只会返回左上角的单元格对象。
返回:
返回 Cell 对象。
抛出:
java.lang.Exception

openTable

public Table openTable(java.lang.String rangeAddress)
                throws java.lang.Exception
打开指定的单元格区域,并返回 Table 对象。

在PageOffice中,我们把Excel工作表上的任意一块连续的单元格区域定义为一个Table对象。如果您需要操作一个单元格区域,您就应该使用 Table 对象。

如果要输出到表格里的实际数据行数超过了 RangeAddress 指定的单元格区域行数,Table 将会自动扩展单元格行数到实际大小,并且给新的单元格数据行应用 RangeAddress 指定的单元格区域的格式。如果您不希望表格按实际数据行数自动扩展,而维持 RangeAddress 指定的大小,您需要调用 Sheet.openTable(string, bool) 方法。

示例代码 1: 下面的示例展示了如何调用 OpenTable 方法在一个已存在格式的空表上输出数据。

 Workbook wb = new Workbook();
 Sheet sheet1 = wb.openSheet("sheet1");
 Table table1 = sheet1.openTable("B5:F10");
 
 // 输出数据到表格
 Random r = new Random();
 for (int j = 0; j < 4; j++){
        for (int i = 0; i < table1.getDataFields().size(); i++){
                table1.getDataFields().get(i).setValue(String.valueOf(r.nextInt(100))); // 模拟来自数据库的数据
        }
        table1.nextRow();
 }
 table1.close(); // 必须
 
 poCtrl1.setServerPage("poserver.do"); //此行必须
 poCtrl1.setWriter(wb);
 poCtrl1.webOpen("doc/test.xls", OpenModeType.xlsReadOnly, "张三");
 poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须
 

示例代码 2: 下面的示例展示了如何调用 OpenTable 方法在一个空白工作表上画表及输出其数据,同时也展示了如何对超出范围的数据进行动态报警。

 Workbook wb = new Workbook();
 Sheet sheet1 = wb.openSheet("sheet1");
 Table table1 = sheet1.openTable("B5:F10");
 
 // 画表格线、设置表格颜色
 table1.setRowHeight(20);
 table1.setColumnWidth(14.25);
 table1.getBorder().setBorderType(XlBorderType.FullGrid);
 table1.getBorder().setLineStyle(XlBorderLineStyle.Continuous);
 table1.getBorder().setWeight(XlBorderWeight.Thin);
 table1.getBorder().setLineColor(Color.gray);
 table1.setBackColor(Color.decode("#E6E6E6"));
 
 // 画表头
 sheet1.openTable("B5:F5").setBackColor(Color.blue);
 sheet1.openTable("B5:F5").setForeColor(Color.white);
 table1.getDataFields.get(0).setValue("字段标题1");
 table1.getDataFields.get(1).setValue("字段标题2");
 table1.getDataFields.get(2).setValue("字段标题3");
 table1.getDataFields.get(3).setValue("字段标题4");
 table1.getDataFields.get(4).setValue("字段标题5");
 table1.nextRow();
 
 // 输出数据到表格
 Random r = new Random();
 for (int j = 0; j < 4; j++){
        for (int i = 0; i < table1.getDataFields().size(); i++){
                int iValue = r.nextInt(1000);
                table1.getDataFields().get(i).setValue(String.valueOf(iValue)); // 模拟来自数据库的数据
                if (iValue > 800){ // 如果单元格的值超过900,就设置当前单元格的颜色给予警示。
                        table1.getDataFields().get(i).setBackColor(Color.red);
                        table1.getDataFields().get(i).setForeColor(Color.yellow);
                }
        }
        table1.nextRow();
 }
 // 画表尾,并计算合计值
 sheet1.openTable("B10:F10").setBackColor(Color.orange);
 table1.getDataFields().get(0).setValue("合计");
 // 这里的合计值可以开发者自己计算,也可以利用Excel强大的公式功能,这样会非常简便
 table1.getDataFields().get(4).setFormula = "sum(F6:F9)";
 table1.nextRow();
 table1.close(); // 必须
 
 // 将 C10:E10 指定的单元格区域合并成一个单元格
 sheet1.openTable("C10:E10").merge(); 
 
 poCtrl1.setServerPage("poserver.do"); //此行必须
 poCtrl1.setWriter(wb);
 poCtrl1.webOpen("doc/test.xls", OpenModeType.xlsReadOnly, "张三");
 poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须
 

参数:
rangeAddress - Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。

注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。

返回:
返回 Table 对象。
抛出:
java.lang.Exception

openTable

public Table openTable(java.lang.String rangeAddress,
                       boolean autoIncrease)
                throws java.lang.Exception
打开指定的单元格区域,并返回 Table 对象。

参数:
rangeAddress - Excel风格的单元格区域引用字符串。例如:"A1:F5",表示一个矩形单元格区域,其左上角单元格的行号是1,列号是1,右下角单元格的行号是5,列号是6。

注意:在Excel2003及之前的版本里,最大行数限制为65536,最大列数限制为256。在传入RangeAddress参数时注意不要超出最大行列数限制。

autoIncrease - 可选参数。默认值为 true。如果值为false,表格不会按实际数据行数自动扩展,而是维持 RangeAddress 指定的大小,多余的数据行将被抛弃。
返回:
返回 Table 对象。
抛出:
java.lang.Exception

openTableByDefinedName

public Table openTableByDefinedName(java.lang.String definedName,
                                    int rowCount,
                                    int colCount)
                             throws java.lang.Exception
打开具有指定名称(Excel中定义的名称)的单元格区域,并返回 Table 对象。

如果指定的名称在当前工作表中不存在,则对该 Table 对象的所有操作将全部被忽略。

参数:
definedName - 在Excel中定义的名称,可以是全局名称,也可以是局部名称。
rowCount - 名称指定区域的行数。
colCount - 名称指定区域的列数。
返回:
返回 Table 对象。
抛出:
java.lang.Exception

openTableByDefinedName

public Table openTableByDefinedName(java.lang.String definedName,
                                    int rowCount,
                                    int colCount,
                                    boolean autoIncrease)
                             throws java.lang.Exception
打开具有指定名称(Excel中定义的名称)的单元格区域,并返回 Table 对象。

如果指定的名称在当前工作表中不存在,则对该 Table 对象的所有操作将全部被忽略。

参数:
definedName - 在Excel中定义的名称,可以是全局名称,也可以是局部名称。
rowCount - 名称指定区域的行数。
colCount - 名称指定区域的列数。
autoIncrease - 可选参数。默认值为 true。如果值为false,表格不会按实际数据行数自动扩展,而是维持 RowCount 指定的大小,多余的数据行将被抛弃。
返回:
返回 Table 对象。
抛出:
java.lang.Exception