Я хочу вставить таблицу в определенную позицию с помощью poi, таблица сгенерирована, но я считаю, что эта таблица не отображается.HWPF-POI: Вставка таблицы в документ с poi hwpf не отображается
Сгенерированная таблица в документе видна при предварительном просмотре или редактировании этого документа с помощью macOS и его текстового инструмента, POI также может читать таблицу и содержимое. Я планирую загрузить 4 изображения, чтобы отобразить этот процесс, но я могу отправить только 2 изображения, извините за это.
@Test
public void exportDoc() throws Exception {
FileInputStream readFile = new FileInputStream(new File(readDoc));
FileOutputStream replaceFile = new FileOutputStream(new File(replaceDoc));
HWPFDocument document = new HWPFDocument(readFile);
Table table = WordUtil.insertNewTable(document,"${table}");
insertTableInDoc(table);
document.write(replaceFile);
readFile.close();
replaceFile.close();
}
private Table insertNewTable(HWPFDocument doc, String sourceValue) {
Range range = doc.getRange();
Table table = null;
for (int i = 0; i < range.numSections(); ++i) {
Section s = range.getSection(i);
for (int x = 0; x < s.numParagraphs(); x++) {
Paragraph p = s.getParagraph(x);
if (p.text().contains(sourceValue)) {
//remove target text
range.replaceText(sourceValue, "");
table = p.insertTableBefore((short) 3, 3);
return table;
}
}
}
return table;
}
private void insertTableInDoc(Table table) {
int count = 1;
for (int rowNum = 0; rowNum < table.numRows(); rowNum++) {
TableRow tableRow = table.getRow(rowNum);
for (int colNum = 0; colNum < tableRow.numCells(); colNum++) {
TableCell cell = tableRow.getCell(colNum);
Paragraph paragraph = cell.getParagraph(0);
CharacterRun characterRun = paragraph.getCharacterRun(0);
characterRun.insertBefore("number: " + count++);
}
}
}
PS:
Я уверен, что это не микрософт для проблемы с маком, также не отображается таблица генерации в doc на платформе Windows.
(первый раз задать вопрос, если что-то неправильно, или мое выражение не ясно, пожалуйста, дайте мне знать, и я буду изменять его без задержки. Спасибо)
Для информации: Я могу воспроизвести вашу проблему. Кажется, что таблица, добавленная с insertTableBefore, имеет фиксированную ширину 0. Даже графический интерфейс Word не может исправить это. Но я больше не буду беспокоиться о HWPF (бинарный формат Word). Этот формат устарел с 2007 года. XWPF (Office OpenXML) - это текущий формат. Поскольку никто не ответил, я считаю, что я не единственный, у кого такое мнение. –
Большое спасибо за вашу заботу и ответ. Ранее я объяснял менеджеру по поводу различий между доком и доксом, но она настаивала на поддержке типа документа. Кажется, мы должны изменить нашу стратегию, которая позволяет пользователю экспортировать слово со столом в тип docx. –