在poi中控制文档的表行高

时间:2011-07-14 10:58:06

标签: ms-word apache-poi doc

我正在尝试使用以下代码

使用XWPF组件在poi中绘制一个表
     // InputStream in= Temp.class.getResourceAsStream("Sample.docx");

      XWPFDocument doc = new XWPFDocument();

      XWPFTable table=doc.createTable(2,2);

     //  CTDecimalNumber rowSize = table.getCTTbl().getTblPr().getTblStyleRowBandSize();
      // rowSize.setVal(new BigInteger("10"));
     // table.getRow(1).setHeight(0);
      table.getRow(0).getCell(0).setText("Row-0-Cell-0");
      table.getRow(0).getCell(1).setText("Row-0-Cell-1");
      table.getRow(1).getCell(0).setText("Row-1-Cell-0");
      table.getRow(1).getCell(1).setText("Row-1-Cell-1");

      FileOutputStream out = new FileOutputStream("simpleTable.docx");
      doc.write(out);
      out.close();

它正确地绘制了桌子,但是单元格的高度太大,宽度也不能正确地落在适当的位置。我在一张纸条中看到该表应根据内容自动调整。尝试了几件如下的事情:

  • 尝试设置高度,如上面注释的代码所示 那没用。
  • 尝试阅读现有的文档,如图所示 inputstream评论代码。这给了一个不可能的例外 读一个poi-ooxml文件。
  • 尝试使用TblStyleRowBandSize但是 始终保持为空。不知道如何创建新的实例 CTDecimalNumber或TblStyleRowBandSize

提前感谢。

更多见解: 当我创建一个空表,并使用create添加行和列时,它工作正常,并不插入格式字符。但是制作一个空表导致在开始时创建一个单元格,我仍然试图找到一种方法来删除第一列。新代码

   XWPFTable table=doc.createTable();

    XWPFTableRow row1 =  table.createRow();
    row1.createCell().setText("Row-0-Cell-0");
    row1.createCell().setText("Row-0-Cell-1");
    XWPFTableRow row2 =  table.createRow();
    row2.createCell().setText("Row-1-Cell-0");
    row2.createCell().setText("Row-1-Cell-1");

1 个答案:

答案 0 :(得分:0)

我不确定你的大多数问题,但我可以帮助你最后一点,你会想要这样的东西:

    if(! table.getTblPr().isSetTblStyleRowBandSize()) {
       table.getTblPr().addNewTblStyleRowBandSize();
    }
    System.out.println("Was " + table.getTblPr().getTblStyleRowBandSize().getVal());
    table.getTblPr().getTblStyleRowBandSize().setVal(new BigInteger("12345"));
    System.out.println("Now " + table.getTblPr().getTblStyleRowBandSize().getVal());