一、はじめに APACHE POIは、ExcelやWordなどの文書を解析、生成するためのJavaライブラリです。本稿では、POIを用いた動的Word文档生成方法について説明します。 二、使用するJava API
- poi.jar
- poi-contrib.jar
- poi-ooxml.jar
- poi-ooxml-schemas.jar
- poi-scratchpad.jar
三、使用方法 WordExtractorを用いて、指定した模板ファイルを基盤としたWord文档を生成することができます。 基本的な手順如下:
- 指定したDOCファイルへのパスを指定する
- 必要なkeyを設定する(本文はglobale keyとして处理します)
- replaceText()を用いて、 DOCファイルの内容を代入します
- ファイルを生成します
下記にJavaプログラムの例を示します:
package com.seeyon.apps.xxs.utils;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.*;
import org.apache.poi.hwpf.usermodel.Range;
/**
* @Author: zjt
* @Date: 2023/10/14 17:06
* @Version 1.0
*/
public class WordExtract {
WordExtract wordExtract;
public static void main(String[] args) {
Map<String, String> params = new HashMap<>();
new WordExtract().writeWord("D:\\tykjCodeSpace\\科技厅\\查新报告样式-查新系统用.doc", params);
}
// Wordを生成する
public void writeWord(String path, Map<String, String> params){
File file = new File(path);
try{
InputStream is = new FileInputStream(file);
HWPFDocument doc = new HWPFDocument(is);
Range range = doc.getRange();
range.replaceText("projectName", "测试");
range.replaceText("principal","孙紫荆");
range.replaceText("dateOfEntrustment", "2023年10月14");
range.replaceText("finishDate","2023年10月14");
range.replaceText("chineseProject","测试");
range.replaceText("englishProject","test");
range.replaceText("signature","孙紫荆");
range.replaceText("phone","17379207188");
range.replaceText("faxNumber","111111");
range.replaceText("e-mail","1004748508@qq.com");
range.replaceText("purpose","科技查新");
range.replaceText("technical","检查重点");
range.replaceText("point","111111111111111");
range.replaceText("clustering","没有");
range.replaceText("strategy","有");
range.replaceText("result","通过");
range.replaceText("conclusion","完美通过");
range.replaceText("files","无");
range.replaceText("remark","恭喜通过");
// DOCファイル生成
OutputStream os = new FileOutputStream("D:\\tykjCodeSpace\\科技厅\\生成文件.doc");
doc.write(os);
os.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
生成されたDOCファイルの例:
<!DOCTYPE html>
<html>
<head>
<title> DOC生成test</title>
</head>
<body>
<h1> DOC生成test</h1>
<p> 本文は测试として生成されました。</p>
</body>
</html>
POIは、Word документの生成に際して、text replacementの機能を提供しますが、 picturesの处理には対応fails 합니다。例えば、 DOCXファイル(WordStar format)は_POI対応可能です。WordStarとWord documentのdifferenceが著しいため、 picturesの处理に局限されています。
.poifileは、文字列 replacementに焦点を当てます。 picturesのinsert/deleteはサポートされていません。
したがって、 DOCXファイルを生成する際にはPOIが使用できません。 DOCXに相当するPOIの対応するライブラリが存在するか否かを確認し、必要に応じてalternativeな方法を斟酌することができます。