diff --git a/common/src/main/java/com/jeesite/common/utils/word/WordExport.java b/common/src/main/java/com/jeesite/common/utils/word/WordExport.java index 22b39a45..1aaec532 100644 --- a/common/src/main/java/com/jeesite/common/utils/word/WordExport.java +++ b/common/src/main/java/com/jeesite/common/utils/word/WordExport.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.math.BigInteger; import java.util.HashMap; import java.util.Iterator; @@ -11,6 +12,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; @@ -24,6 +26,8 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr; import org.w3c.dom.Node; +import com.jeesite.common.io.ResourceUtils; + /** * 使用POI,进行Word相关的操作 * @author xuyu @@ -41,15 +45,18 @@ public class WordExport { /** * 为文档设置模板 - * @param templatePath 模板文件名称 + * @param templatePath 模板文件名称 */ public void setTemplate(String templatePath) { try { - this.document = new XWPFDocument(OPCPackage.open(templatePath)); + if (StringUtils.startsWith(templatePath, "classpath:")) { + InputStream is = ResourceUtils.getResourceFileStream(templatePath); + document = new XWPFDocument(OPCPackage.open(is)); + }else { + document = new XWPFDocument(OPCPackage.open(templatePath)); + } bookMarks = new BookMarks(document); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidFormatException e) { + } catch (IOException | InvalidFormatException e) { e.printStackTrace(); } } @@ -237,12 +244,12 @@ public class WordExport { // public static void main(String[] args) { // long startTime = System.currentTimeMillis(); -// WordExport changer = new WordExport(); -// String fileName = WordExport.class.getResource("Word模版.docx").getFile(); -// fileName = EncodeUtils.decodeUrl(fileName.substring(1)); -// System.out.println(fileName); -// -// changer.setTemplate(fileName); +// WordExport export = new WordExport(); +// +// String fileName = "classpath:" + StringUtils.substringBeforeLast(StringUtils.replace( +// WordExport.class.getName(), ".", "/"), "/") + "/Word模版.docx"; +// export.setTemplate(fileName); +// // Map content = new HashMap(); // content.put("Principles", "格式规范、标准统一、利于阅览"); // content.put("Purpose", "规范会议操作、提高会议质量"); @@ -259,9 +266,9 @@ public class WordExport { // // content.put("company_name", "**有限公司"); // content.put("company_address", "机场路2号"); -// changer.replaceBookMark(content); +// export.replaceBookMark(content); // -// //替换表格标签 +// // 替换表格标签 // List> content2 = new ArrayList>(); // Map table1 = new HashMap(); // @@ -277,10 +284,10 @@ public class WordExport { // for (int i = 0; i < 3; i++) { // content2.add(table1); // } -// changer.fillTableAtBookMark("Table", content2); -// changer.fillTableAtBookMark("month", content2); +// export.fillTableAtBookMark("Table", content2); +// export.fillTableAtBookMark("month", content2); // -// //表格中文本的替换 +// // 表格中文本的替换 // Map table = new HashMap(); // table.put("CUSTOMER_NAME", "**有限公司"); // table.put("ADDRESS", "机场路2号"); @@ -290,11 +297,14 @@ public class WordExport { // table.put("PRICE_2", "0.906"); // table.put("PRICE_3", "0.433"); // table.put("NUM_PRICE", "0.675"); -// changer.replaceText(table, "Table2"); +// export.replaceText(table, "Table2"); // -// //保存替换后的WORD -// changer.saveAs(fileName + "_out.docx"); -// System.out.println("time==" + (System.currentTimeMillis() - startTime)); +// // 保存替换后的 Word +// String outFileName = "target/export.docx"; +// export.saveAs(outFileName); +// System.out.println("模板:" + fileName); +// System.out.println("输出:" + outFileName); +// System.out.println("用时:" + (System.currentTimeMillis() - startTime)); // // }