| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.business.model.YwTempConfig; |
| | | import fr.opensagres.xdocreport.document.IXDocReport; |
| | | import fr.opensagres.xdocreport.document.registry.XDocReportRegistry; |
| | | import fr.opensagres.xdocreport.template.IContext; |
| | | import fr.opensagres.xdocreport.template.TemplateEngineKind; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.xwpf.usermodel.XWPFDocument; |
| | | import org.apache.poi.xwpf.usermodel.XWPFParagraph; |
| | | import org.apache.poi.xwpf.usermodel.XWPFRun; |
| | |
| | | |
| | | |
| | | |
| | | public static String modifyWordTemplate(String templatePath, List<YwTempConfig> ywTempConfigList,String fileName) { |
| | | public static String modifyWordTemplate_old(String templatePath, List<YwTempConfig> ywTempConfigList,String fileName) { |
| | | try ( |
| | | XWPFDocument document = new XWPFDocument(getFileInputStream(templatePath))) { |
| | | // 此处连接到后续替换步骤 |
| | |
| | | for (XWPFRun run : paragraph.getRuns()) { |
| | | // 替换占位符 |
| | | String text = run.getText(0); |
| | | System.out.println(text); |
| | | if (text != null) { |
| | | for (YwTempConfig ywTempConfig:ywTempConfigList |
| | | ) { |
| | | for (YwTempConfig ywTempConfig:ywTempConfigList) { |
| | | if(StringUtils.isNotBlank(ywTempConfig.getUrl())){ |
| | | text = text.replace(ywTempConfig.getTitle(), ywTempConfig.getUrl()); |
| | | }else{ |
| | | text = text.replace(ywTempConfig.getTitle(), ""); |
| | | } |
| | | |
| | | } |
| | | run.setText(text, 0); // 重新设置文本 |
| | | } |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"文件转换异常!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public static String modifyWordTemplate(String templatePath, List<YwTempConfig> ywTempConfigList,String fileName,String zipFilePath) { |
| | | InputStream ins = null; |
| | | OutputStream out = null; |
| | | try{ |
| | | //获取Word模板,模板存放路径在项目的resources目录下 |
| | | ins = getFileInputStream(templatePath) ; |
| | | // ins = new FileInputStream("D:\\3.docx"); |
| | | //注册xdocreport实例并加载FreeMarker模板引擎 |
| | | IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins, |
| | | TemplateEngineKind.Freemarker); |
| | | //创建xdocreport上下文对象 |
| | | IContext context = report.createContext(); |
| | | for (YwTempConfig ywTempConfig:ywTempConfigList) { |
| | | if(StringUtils.isBlank(ywTempConfig.getUrl())){ |
| | | ywTempConfig.setUrl("-"); |
| | | } |
| | | context.put(ywTempConfig.getTitle().replace("${","").replace("}",""), ywTempConfig.getUrl()); |
| | | } |
| | | String path = zipFilePath + fileName; |
| | | out = new FileOutputStream(new File(path)); |
| | | report.process(context, out); |
| | | return path; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | if (null != ins) { |
| | | try { |
| | | ins.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /*读取网络文件*/ |
| | | public static InputStream getFileInputStream(String path) { |
| | | URL url = null; |