【オリジナル】dom 4 jでwordテンプレートの内容を読み込み、修正してword文書を作成する
最近はプロジェクトをしていますが、お客様から提供されたワードドキュメントを動的にダウンロードサービスを提供する必要があります.インターネットでN以上の資料を探しましたが、word文書に対しては完璧ではないことがたくさん分かりました.例えば、JACOBとJAVA 2 WORDは、この二つはwindowsプラットフォームでしか使えません.プラットフォームを跨ぐシステムにとっては、虚構に等しいです.あとはapacheのpoiコンポーネントです.poiはexcleの操作にはいいですが、wordの操作はまだ開発段階にあります.普通の機能が多く、wordの操作にはほとんど使い道がありません.残念ながら、多くの資料を調べてみましたが、ワードをmht形式またはxml形式の文書に変換することができます.最初はmhtを修正したいのですが、効果があまりよくないことが分かりました.フォーマットの問題は制御しにくいです.tfも同じです.特に中国語の問題です.その後、仕方がなくて、試した心理を持ってxml文書を使ってみたら、効果もあまりよくないと分かりました.複雑です.でも、上記の方法に対しては一番いいと思います.プロジェクトの需要に迫られて、仕方がないです.今はこの方法を使うしかないです.
この方法はdom 4 jを使ってxmlファイルを説明します.効果もいいし、簡単です.深く入ったらまた書きましょう.テストの時に書いた種類を先に貼ります.
この方法はdom 4 jを使ってxmlファイルを説明します.効果もいいし、簡単です.深く入ったらまた書きましょう.テストの時に書いた種類を先に貼ります.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class UpdateReport {
public static void main(String[] args) {
UpdateReport up = new UpdateReport();
// word xml , xml
up.UpdateXmlFile("d:\\1.xml", "d:\\2.xml");
}
/**
* xml ,
* @param filename
* @param newfilename
* @return
*/
public void UpdateXmlFile(String filename,String newfilename){
// dom4j xml
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new FileInputStream(new File(filename)));
//
List list = document.selectNodes("//w:t" );
Iterator iter = list.iterator();
while(iter.hasNext()){
Element element = (Element)iter.next();
String str = element.getText();
// , $xxx$
if(str != null && "$rid$".equals(str.trim())) {
System.out.println(element.getText());
element.setText("LCZC10010");
}
}
//
, ,
//
List list1 = document.selectNodes("//w:binData" );
Iterator iter1 = list1.iterator();
while(iter1.hasNext()){
Element element = (Element)iter1.next();
String str = element.getText();
str = str.replaceAll("
", "");
element.setText(str);
}
// dom4j document
try{
XMLWriter writer = null;
/** */
//OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();
//OutputFormat format = new OutputFormat();
// ,
OutputFormat format = new OutputFormat("");
// ,
format.setLineSeparator("");
/** XML , UTF-8, , */
format.setEncoding("UTF-8");
writer= new XMLWriter(new FileOutputStream(new File(newfilename)),format);
writer.write(document);
writer.flush();
writer.close();
}catch(Exception ex){
ex.printStackTrace();
}
// ,
// Writer writer = new OutputStreamWriter(new FileOutputStream(newfilename));
// document.write(writer);
// writer.flush();
// writer.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}