Apache POI로 Word 파일 로드
이전
Apache POI를 사용하여 Excel 데이터를 읽는 것이 흔한 (?) 것이라고 생각하지만, 요즘 이번에는 슬프게도
Word 데이터를 로드해야 했으므로 여기에 메모를 남깁니다.
Apache POI로 Word 파일 편집 - M12i. 에 의하면, Word 내의 데이터는 Range > Section > Paragraph > CharacterRun 의 계층 구조로 취득할 수 있다고 한다.
그러므로, 우선 어떤 구조로 되어 있는지 전체를 표시해 본다.
소스 코드
build.gradle...
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.poi:poi-scratchpad:3.11'
}
이것은 2003 형식의 Word 파일을 읽고 있습니다.
Main.javapackage com.example;
import java.util.stream.IntStream;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Section;
public class Main {
public static void main(String[] args) throws Exception {
// クラスパス上に配置したWordファイルを読み込む。
HWPFDocument document =
new HWPFDocument(Main.class.getResourceAsStream("/sample.doc"));
// ドキュメント全体を読み込む。
Range text = document.getRange();
IntStream.range(0, text.numSections()).forEach(sNo -> {
Section section = text.getSection(sNo);
IntStream.range(0, section.numParagraphs()).forEach(pNo -> {
Paragraph paragraph = section.getParagraph(pNo);
IntStream.range(0, paragraph.numCharacterRuns()).forEach(cNo -> {
CharacterRun characterRun = paragraph.getCharacterRun(cNo);
System.out.printf("%d:%d:%d:%s", sNo, pNo, cNo, characterRun.text());
System.out.println();
});
});
});
}
}
Java 8 잘 다루고 있는 느낌이 별로 없지만, 이것으로 우선 전문 CharacterRun 에 분해한 상태로 표시할 수 있다.
불행히도 수수께끼의 문자가 혼란스러워서 좀처럼 매운 맛이 있다.
Reference
이 문제에 관하여(Apache POI로 Word 파일 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ptiringo/items/d8b4cc667b4ad6827939
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
build.gradle
...
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.poi:poi-scratchpad:3.11'
}
이것은 2003 형식의 Word 파일을 읽고 있습니다.
Main.java
package com.example;
import java.util.stream.IntStream;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Section;
public class Main {
public static void main(String[] args) throws Exception {
// クラスパス上に配置したWordファイルを読み込む。
HWPFDocument document =
new HWPFDocument(Main.class.getResourceAsStream("/sample.doc"));
// ドキュメント全体を読み込む。
Range text = document.getRange();
IntStream.range(0, text.numSections()).forEach(sNo -> {
Section section = text.getSection(sNo);
IntStream.range(0, section.numParagraphs()).forEach(pNo -> {
Paragraph paragraph = section.getParagraph(pNo);
IntStream.range(0, paragraph.numCharacterRuns()).forEach(cNo -> {
CharacterRun characterRun = paragraph.getCharacterRun(cNo);
System.out.printf("%d:%d:%d:%s", sNo, pNo, cNo, characterRun.text());
System.out.println();
});
});
});
}
}
Java 8 잘 다루고 있는 느낌이 별로 없지만, 이것으로 우선 전문 CharacterRun 에 분해한 상태로 표시할 수 있다.
불행히도 수수께끼의 문자가 혼란스러워서 좀처럼 매운 맛이 있다.
Reference
이 문제에 관하여(Apache POI로 Word 파일 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ptiringo/items/d8b4cc667b4ad6827939텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)