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 :
,나는 이것이 Mac의 문제에 대해 Microsoft가 아니라고 확신합니다. Windows 플랫폼의 doc 테이블의 테이블도 표시되지 않습니다.
HWPF 프로젝트의 현재 상태와
귀하의 정보 : 귀하의 문제를 재현 할 수 있습니다. insertTableBefore로 추가 된 테이블의 너비가 고정 된 것처럼 보입니다. Word GUI조차도이를 복구 할 수 없습니다. 하지만 HWPF (바이너리 Word 형식)로 더 이상 귀찮게하지 않을 것입니다. 이 형식은 2007 년 이래 구형입니다. XWPF (Office OpenXML)가 현재 형식입니다. 아무도 대답하지 않기 때문에 나는이 의견을 가진 유일한 사람이 아니라고 생각합니다. –
대단히 고맙고 회신 해 주셔서 감사합니다. 필자는 제품 관리자에게 이전에 doc과 docx의 차이점에 대해 설명했지만 그녀는 doc 유형을 지원해야한다고 주장했습니다. 우리는 테이블을 가진 docx 형식의 사용자 내보내기 단어 만 허용하는 전략을 변경해야합니다. –