Я пытаюсь нарисовать таблицу в poi, используя компонент XWPF, используя следующий код:
// 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();
Он правильно рисует таблицу, но высота ячеек слишком велика, и ширина также не падает должным образом вместо.Я видел в примечании, что таблица должна автоматически соответствовать в соответствии с содержанием.Попробовал пару вещей, которые выглядят следующим образом:
- Попытался установить высоту, как показано в приведенном выше коде, но это не сработало.
- Попытка чтения существующего документа, как показано в коде с комментариями inputtream.Это дало исключение, которое не могло прочитать файл 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");