Apache POI HWPF

 
 

Microsoft Word バイナリ ドキュメントの処理

オープン ソース Java ライブラリを介して DOC ファイルを作成、読み取り、操作、変換します。

Apache POI HWPF は、Microsoft Word DOC ファイル形式の Apache POI ポートです。追加のライブラリを必要とせずに DOC ファイルを読み書きする機能を提供します。また、古い Word 6 および Word 95 ファイル形式の限定的な読み取り専用サポートも提供します。この段階では、HWPF は主に書式設定されたテキストに関係しています。基本的なテキスト抽出、特定のテキスト抽出、ヘッダーとフッターへのアクセス、およびテキスト機能の変更を提供します。

これにより、開発者は、段落の操作、テキストへのさまざまなスタイルの追加、表の追加、テキストの抽出などの機能を備えた MS-Word ドキュメントを簡単に作成できます。

Previous Next

Apache POI HWPF の概要

まず、システムに Java Development Kit (JDK) をインストールする必要があります。既にお持ちの場合は、Apache POI の ダウンロード ページに進み、最新の安定版リリースをアーカイブから入手してください。必要なライブラリーを Java プログラムにリンクできる任意のディレクトリーに ZIP ファイルの内容を抽出します。それだけです!

Maven ベースの Java プロジェクトで Apache POI を参照するのはさらに簡単です。必要なのは、pom.xml に次の依存関係を追加し、IDE が Apache POI Jar ファイルを取得して参照できるようにすることだけです。

Apache POI Maven の依存関係

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>4.0.0</version>
  </dependency>
  

Java API を使用して Word 文書を作成および変更する

Apache POI HWPF を使用すると、プログラマは新しい Word ドキュメントを DOC ファイル形式で作成できます。 API を使用すると、開発者は必要に応じて既存の Word ドキュメントを変更することもできます。この API は、Word 文書への段落の追加、テキストの配置とフォント スタイルの適用などもサポートしています。

DOC ファイルの変更 - Java

// open an empty doc file, using APACHE POI we cannot create .doc file format from scratch
HWPFDocument doc = new HWPFDocument(new FileInputStream("empty.doc"));
Range range = doc.getRange();
// inset text
CharacterRun run = range.insertAfter("File Format Developer Guide - " +
"Learn about computer files that you come across in " +
"your daily work at: www.fileformat.com ");
OutputStream out = new FileOutputStream("document.pdf");
// save document
doc.write(out);
out.close();

Java を使用して Word 文書を他の形式に変換する

pache POI HWPF を使用すると、ソフトウェア開発者は Microsoft Word 文書をサポートされている任意のファイル形式に簡単に変換できます。現時点では、Java 開発者は Word ドキュメントを HTML、FO、およびテキスト形式に変換できます。 org.apache.poi.hwpf.converter パッケージには、Word から HTML および Word から FO へのコンバーターが含まれています。

DOC を HTML に変換する

// load document
HWPFDocumentCore wordDocument = WordToHtmlUtils.loadDoc(new FileInputStream("document.doc"));
Document newDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
// initialize WordToHtmlConverter
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument );
// process document
wordToHtmlConverter.processDocument( wordDocument );
StringWriter stringWriter = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );
transformer.setOutputProperty( OutputKeys.METHOD, "html" );
transformer.transform(
    new DOMSource( wordToHtmlConverter.getDocument() ),
    new StreamResult( stringWriter ) );
// get html
String html = stringWriter.toString();

DOC ファイルからテキストを読み取る

Apache POI HWPF は、Microsoft Word DOC ファイル形式からテキストを読み取るための WordExtractor クラスを提供します。数行のコードだけで、ファイルからテキストを抽出できます。

DOC ファイルからテキストを抽出する

// load DOC file
FileInputStream fis = new FileInputStream(new File("document.doc"));
// open file
HWPFDocument doc = new HWPFDocument(fis);
// read text
WordExtractor extractor = new WordExtractor(doc);
// display text
System.out.println(extractor.getText());

カスタム ヘッダーとフッターを DOC に追加する

Apache POI HWPF を使用すると、Java 開発者は Word ドキュメント内にカスタム ヘッダーとフッターを作成できます。 Apache POI HWPF は「適度に機能する」と説明されています。基本的なテキスト抽出、特定のテキスト抽出、ヘッダーとフッターへのアクセス、およびテキスト機能の変更をサポートします。 getText() メソッドを使用してすべての段落からテキストを取得するか、getParagraphText() を使用して各段落から順番にテキストを取得できます。 

Word DOC ファイルでカスタム ヘッダーとフッターを管理する


// The path to the documents directory.
String dataDir = Utils.getDataDir(ApacheHeaders.class);
POIFSFileSystem fs = null;
fs = new POIFSFileSystem(new FileInputStream(dataDir + "MyHeader.doc"));
HWPFDocument doc = new HWPFDocument(fs);
int pageNumber = 1;
HeaderStories headerStore = new HeaderStories(doc);
String header = headerStore.getHeader(pageNumber);
System.out.println("Header Is: " + header);
 日本