2011-07-14 67 views
2

我試圖用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(); 

它正確繪製表格繪製表poi的文件,但細胞的高度過大和寬度也沒有妥善落實到位。我在一張紙條上看到,桌子應該按照內容自動適合。嘗試幾件事情如下:

  • 試圖設置高度如上面註釋代碼所示,但 沒有奏效。
  • 嘗試讀取現有文檔,如 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"); 
+0

我認爲自動調整是工作,但什麼正在發生的事情是,在轉換格式化符號的可見性後,插入了額外的換行符。不知道爲什麼XWPF將這些格式插入到單元格中。 – lalit

回答

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()); 
+0

感謝您的回覆。 getTbalPr是私有的,因此將其更改爲table.getCTTbl()。getTblPr()。但是我意識到這個問題更多的是插入格式化符號,因爲我已經提出了這個問題的評論。 – lalit