POIテンプレートによるwordのエクスポート
最近、会社が私に下してくれた任務はますます面白くなってきた.この2,3日するのはjqueryのスタイルの問題で、tabのスタイルに変更します.これは難しくないですが、一番面倒なのは業務です.ほほほ、もちろんこれは今日のブログのポイントではありません.
先日完成したばかりの任務はPOIを使ってテンプレートからwordをエクスポートし、1日半かけて完成した.最初はきっと技术の仕事だと思って、そこでとてもhappyのインターネットを利用して资料を探して、1周また1周探して、ずっとどういうことが分からないで、最后に1つのウェブサイトを见てやっと分かって、もとはこのようなことです:(先に私の参考のウェブサイトを贴ってきます)
http://topic.csdn.net/u/20110415/17/6cfbe1a1-ccdf-420e-b868-38b9a4ca13e0.html(最後の文では、テンプレートをxmlファイルとして保存し、xmlを書き換えます)
テンプレートをxmlファイルとして保存し、xmlを書き換えるという言葉が私の問題解決のポイントであり、もちろんこれからも技術的な問題ではなく、力が働くことを確定しました.ほほほ.
具体的なプロセスは次のとおりです.
1、wordテンプレートファイルを定義する:
あなたのテンプレートwordを開いて、xml形式として保存して、必要に応じて、対応するラベルにidなどのattributeを追加して、後での操作を便利にします.次にディレクトリの下に配置します(後の呼び出しの準備)
2、xmlファイルの読み書きを準備する環境、poi環境
私はdom 4 jを使っているので、dom 4 jのjarパッケージをプロジェクトにコピーすればいいです.poi関連jarパッケージをプロジェクトにコピー
3、xmlファイルの読み書き
コードは次のとおりです.
6、添付:xml形式のwordテンプレートのxmlコードを少し貼り付けます(私の上の例と一致しません):
先日完成したばかりの任務はPOIを使ってテンプレートからwordをエクスポートし、1日半かけて完成した.最初はきっと技术の仕事だと思って、そこでとてもhappyのインターネットを利用して资料を探して、1周また1周探して、ずっとどういうことが分からないで、最后に1つのウェブサイトを见てやっと分かって、もとはこのようなことです:(先に私の参考のウェブサイトを贴ってきます)
http://topic.csdn.net/u/20110415/17/6cfbe1a1-ccdf-420e-b868-38b9a4ca13e0.html(最後の文では、テンプレートをxmlファイルとして保存し、xmlを書き換えます)
テンプレートをxmlファイルとして保存し、xmlを書き換えるという言葉が私の問題解決のポイントであり、もちろんこれからも技術的な問題ではなく、力が働くことを確定しました.ほほほ.
具体的なプロセスは次のとおりです.
1、wordテンプレートファイルを定義する:
あなたのテンプレートwordを開いて、xml形式として保存して、必要に応じて、対応するラベルにidなどのattributeを追加して、後での操作を便利にします.次にディレクトリの下に配置します(後の呼び出しの準備)
2、xmlファイルの読み書きを準備する環境、poi環境
私はdom 4 jを使っているので、dom 4 jのjarパッケージをプロジェクトにコピーすればいいです.poi関連jarパッケージをプロジェクトにコピー
3、xmlファイルの読み書き
コードは次のとおりです.
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
String destFilePath = request.getSession().getServletContext()
.getRealPath("\\");
// dom4j xml ( )
SAXReader reader = new SAXReader();
// : conf\\testReportTemplate.xml
Document document = reader.read(new File(destFilePath+"WEB-INF\\testReportTemplate.xml"));
Element root = document.getRootElement();
// ( xml w:body,w:sect , w:, w:, p、r、t, w:p w:r w:t。
Element wbody = root.element("body");
Element wsect = wbody.element("sect");
// section , ,
List<Element> sections = wsect.elements("sub-section");
// section, section ID , ,
for (Element eleSection : sections) {
String eleSectionId = eleSection.attributeValue("id");
if ("testMethodSection".equalsIgnoreCase(eleSectionId)) {
if (testingWorkInfoVO.getTestingMethod() != null) {
eleSection.addElement("w:p")
.addElement("w:r")
.addElement("w:t")
.setText(testingWorkInfoVO.getTestingMethod());//
}
continue;
}
if ("testContentSection".equalsIgnoreCase(eleSectionId)) {
if (testingWorkInfoVO.getTestingContent() != null) {
eleSection.addElement("w:p")
.addElement("w:r")
.addElement("w:t")
.setText(testingWorkInfoVO.getTestingContent());//
}
continue;
}
}
4、poiをwordにエクスポートByteArrayInputStream bais = new ByteArrayInputStream(document.asXML().getBytes("utf-8"));
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
DocumentEntry de = directory.createDocument("WordDocument", bais);
//
OutputStream fos = response.getOutputStream();
//
String outputFileName = null; //
String destFile = destFilePath + "word_template\\"; // ;
outputFileName = " " + ".doc";
destFile = destFilePath + outputFileName; //
response.setContentType("application/octet-stream");
response.setHeader("name", destFile);
response.setHeader("Content-disposition", "attachment; filename=\""
+ URLEncoder.encode(outputFileName, "UTF-8") + "\""); //
fos.flush();
fs.writeFilesystem(fos);
bais.close();
fos.flush();
fos.close();
、基本的には終わりです.ほほほ.質問があったらいつでもメッセージをください.すぐに返事します.6、添付:xml形式のwordテンプレートのxmlコードを少し貼り付けます(私の上の例と一致しません):
<w:document mc:Ignorable="w14 wp14" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
<w:body><w:p w:rsidR="007B7334" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:pStyle w:val="2"/><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t> 、</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t> </w:t></w:r></w:p><w:p w:rsidR="00FB1288" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr></w:pPr></w:p><w:p w:rsidR="00FB1288" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr></w:pPr></w:p><w:p w:rsidR="00FB1288" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr></w:pPr></w:p><w:p w:rsidR="00FB1288" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr></w:pPr></w:p><w:p w:rsidR="00FB1288" w:rsidRDefault="00FB1288" w:rsidP="00FB1288"><w:pPr><w:pStyle w:val="2"/></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t> 、 </w:t></w:r></w:p><w:sectPr w:rsidR="00FB1288"><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="425"/><w:docGrid w:type="lines" w:linePitch="312"/></w:sectPr></w:body>
</w:document>