poiで特定の位置にテーブルを挿入すると、テーブルが生成されますが、このテーブルは表示されません。HWPF-POI:poi hwpfのdocへのテーブルの挿入が見えません
macOSとそのテキストツールを使用してこのドキュメントをプレビューまたは編集するときに、生成されたdocテーブルが表示されます。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:
これはMacの問題のためのマイクロソフトではないと確信していますが、Windowsプラットフォームのdocのgenerateテーブルも表示されません。 HWPFプロジェクトの現在の状態と
(何か問題や、私の表現が明確でない場合は、質問をするのは初めてで、私に知らせてくださいと私は遅滞なく、それを修正します。おかげで)
お客様の情報:問題を再現できます。 insertTableBeforeで追加されたテーブルの幅が0に固定されているかのように見えますが、Word GUIでもこれを修復できません。しかし、私はもうHWPF(バイナリワードフォーマット)を自分では気にしません。この形式は2007年以降のものです.XWPF(Office OpenXML)は現在の形式です。誰も答えなかったので、私はこの意見を持つ唯一の人ではないと信じています。 –
ありがとうございました。私は前にdocとdocxの違いについて私のプロダクトマネージャーに説明しましたが、彼女はdocタイプをサポートすることを主張しました。私たちの戦略を変えなければならないようです。 –