您好,我正在使用Apache POI,并且我必须使用它来创建docx文件。
现在,我遍历html文档并获取标签以创建有效的docx文档。
当我在表格单元格中有一张桌子时,没有办法显示正确的信息。
<table>
<tr>
<td style="text-align: left">Status</td>
<td>
<table>
<tr>
<td>test</td>
</tr>
</table>
</td>
</tr>
</table>
加载带有来自docx的嵌套表的正确文件没有问题。
FileOutputStream fos = null;
XWPFDocument document = null;
try {
fos = new FileOutputStream(docRes);
if (fileType == docType.DOCX) {
try {
String fileName = "D:\\test.docx";
if (!(fileName.endsWith(".doc") || fileName.endsWith(".docx"))) {
throw new FileFormatException();
} else {
XWPFDocument doc = new XWPFDocument(new FileInputStream(fileName));
List<XWPFTable> table = doc.getTables();
}
}
}
}
当我再次保存该文件时,我得到了带有POI的Word中的嵌套表。
但是,如何在不加载正确的docx文件的情况下创建嵌套表?
我检查了许多选项,但已经简单化的解决方案不起作用。
document = new XWPFDocument();
XWPFTable tableOne = document.createTable();
XWPFTableRow tableOneRow1 = tableOne.getRow(0);
XWPFTableRow tableOneRow2 = tableOne.createRow();
tableOneRow1.getCell(0).setText("Test");
tableOneRow1.addNewTableCell();
tableOneRow1.getCell(1).setText("Test");
tableOneRow2.getCell(0).setText("Test");
tableOneRow2.addNewTableCell();
tableOneRow2.getCell(1).setText("include nestedTable");
XWPFTable tableTwo = document.createTable();
XWPFTableRow tableTwoRow1 = tableTwo.getRow(0);
tableTwoRow1.getCell(0).setText("Test");
tableTwoRow1.addNewTableCell();
tableTwoRow1.getCell(0).setText("nestedTable");
tableOneRow2.getCell(1).insertTable(0, tableTwo);
与从docx直接加载的变体的区别在于,在自制解决方案中,文档在文档根目录中有两个表。
我该如何建立嵌套表?
谢谢
祝费利克斯
最佳答案
我没有测试过,但是您可能想看看XWPFTableCell类的文档
方法public void insertTable(int pos,XWPFTable table)
似乎正是您要寻找的。
关于java - Tablecell内的表格-带有Apache POI的嵌套表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32139125/