2016-01-20 91 views
0

我正在使用Apache POI,我試圖用Powerpoint報告自動執行一些任務。更確切地說,我想更新來自代碼的.pptx演示文稿中的數據,包括表格。如何使用Apache POI更新XSLFTable(在.pptx演示文稿中的表格)?

我已經設法獲得XSLFTable對象(感謝此頁:How to modify the cell value of a table in an pptx file with apache-poi 3.9?),但現在我試圖更新表結構。

不幸的是,我不知道如何在該表中創建或刪除行(或列)。方法getRows返回一個列表,但它似乎不可修改。有一個addRow方法,但我沒有找到任何刪除/刪除行。

你知道我該怎麼做到嗎?

非常感謝,並致以最誠摯的問候!

回答

3

獲取XSLFTable

XSLFTable t = null; 
for (XSLFShape shape : slide) { 
    if (shape instanceof XSLFTable) { 
     t = (XSLFTable) shape; 
     r = t.getRows(); 
    } 
} 

添加行和單元格

XSLFTableRow titleRow = tbl.addRow(); 
titleRow.setHeight(50); 
XSLFTableCell titleCell1 = titleRow.addCell(); 
XSLFTextParagraph p1 = titleCell1.addNewTextParagraph(); 
p1.setTextAlign(TextAlign.CENTER); 
XSLFTextRun r1 = p1.addNewTextRun(); 
r1.setText("Column title"); 
r1.setBold(true); 
r1.setFontColor(new Color(0, 104, 145)); 
titleCell1.setFillColor(new Color(190, 230, 245)); 
r1.setFontSize(25.0); 
titleCell1.setVerticalAlignment(VerticalAlignment.MIDDLE); 

刪除行

t.getCTTable().getTrList().remove(t.getNumberOfRows()-1); //Remove the last row from table. 
+0

非常感謝!我不熟悉底層的CT *對象,但是你的代碼是明確的:) –

+0

順便說一下,你能告訴我更多關於'shape.getAnchor();'行嗎?我們爲什麼需要它? –

+1

對不起。這條線是偶然添加的。在這種情況下不需要。 – Gilsha

相關問題