我想在一个单元格中插入一个表格,我做了一个演示但是失败了,有人可以给出一些建议吗?
XWPFDocument document = new XWPFDocument();
XWPFTable tableTwo = document.createTable(1,1);
XWPFTableRow tableTwoRow1 = tableTwo.getRow(0);
tableTwoRow1.getCell(0).setText("aaaaaaaaaa");
XWPFTable tableOne = document.createTable(2,2);
XWPFTableRow tableOneRow1 = tableOne.getRow(0);
XWPFTableRow tableOneRow2 = tableOne.getRow(1);
tableOneRow1.getCell(0).setText("Test");
tableOneRow1.getCell(1).setText("Test");
tableOneRow2.getCell(0).setText("Test");
tableOneRow2.getCell(1).insertTable(0, tableTwo);
FileOutputStream fos = new FileOutputStream("D:\\2.docx");
document.write(fos);
fos.close();
答案 0 :(得分:3)
使用XWPFTable
创建的XWPFDocument.createTable
将始终属于该文档。因此,以后不能从文档中删除并将其放入单元格中。
为此,需要XWPFTableCell.insertNewTbl。
以下代码使用实际的apache poi
版本:
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
public class CreateWordTableInTable {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
XWPFTable tableOne = document.createTable(2,2);
XWPFTableRow tablerow = tableOne.getRow(0);
tablerow.getCell(0).setText("Test");
tablerow.getCell(1).setText("Test");
tablerow = tableOne.getRow(1);
tablerow.getCell(0).setText("Test");
XWPFParagraph paragraph = tablerow.getCell(1).getParagraphArray(0);
XWPFTable tableTwo = tablerow.getCell(1).insertNewTbl(paragraph.getCTP().newCursor());
tableTwo.getCTTbl().addNewTblPr().addNewTblBorders().addNewLeft().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tableTwo.getCTTbl().getTblPr().getTblBorders().addNewRight().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tableTwo.getCTTbl().getTblPr().getTblBorders().addNewTop().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tableTwo.getCTTbl().getTblPr().getTblBorders().addNewBottom().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tableTwo.getCTTbl().getTblPr().getTblBorders().addNewInsideH().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tableTwo.getCTTbl().getTblPr().getTblBorders().addNewInsideV().setVal(
org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder.SINGLE);
tablerow = tableTwo.createRow();
tablerow.createCell().setText("aaaaaaaaaa");
tablerow.createCell().setText("jjjjjjjj");
tablerow = tableTwo.createRow();
tablerow.getCell(0).setText("bbbbbbbbbb");
tablerow.getCell(1).setText("gggggggggg");
document.write(new FileOutputStream("CreateWordTableInTable.docx"));
document.close();
}
}
但我强烈建议不要使用这种方法,而是使用合并的单元格。表格单元格中包含的表格很难看。对于HTML
以及Word
以及可以包含表格的所有其他文本文档格式都是如此。