public String getContent(String code) { Template tpl = loadByCode(code); if (tpl == null) { logger.warn("没有找到编码为'" + code + "'的模板!"); return null; } // 纯文本类型 if (tpl.isPureText()) return tpl.getContentEx(); // 附件的扩展名 String extension = StringUtils.getFilenameExtension(tpl.getPath()); if (tpl.getTemplateType().getCode().equals("word-docx") && extension.equals("docx")) return DocxUtils.loadText(tpl.getInputStream()); if (tpl.getTemplateType().getCode().equals("xls") && extension.equals("xls")) return XlsUtils.loadText(tpl.getInputStream()); if (tpl.getTemplateType().getCode().equals("xlsx") && extension.equals("xlsx")) return XlsxUtils.loadText(tpl.getInputStream()); if (tpl.getTemplateType().getCode().equals("html") && extension.equals("html")) return TemplateUtils.loadText(tpl.getInputStream()); logger.warn("文件后缀名:" + extension + ",未转换为字符串类型"); return null; }
public void formatTo(String code, Map<String, Object> args, OutputStream out) { Template tpl = loadByCode(code); if (tpl == null) logger.warn("没有找到编码为'" + code + "'的模板!"); if (tpl.isFormatted()) logger.warn("code=" + code + ",模板不可格式化。"); // 纯文本类型 if (tpl.isPureText()) { String source = this.getContent(code); String r = TemplateUtils.format(source, args); try { out.write(r.getBytes()); out.flush(); } catch (IOException e) { logger.warn("formatTo 写入数据到流错误:" + e.getMessage()); } finally { try { out.close(); } catch (IOException ex) { } } } else { InputStream is = tpl.getInputStream(); // 附件的扩展名 String extension = StringUtils.getFilenameExtension(tpl.getPath()); if ("word-docx".equals(tpl.getTemplateType().getCode()) && "docx".equals(extension)) { XWPFDocument docx = DocxUtils.format(is, args); try { docx.write(out); out.flush(); } catch (IOException e) { logger.warn("formatTo 写入数据到流错误:" + e.getMessage()); } finally { try { is.close(); out.close(); } catch (IOException ex) { } } } else if ("xls".equals(tpl.getTemplateType().getCode()) && "xls".equals(extension)) { HSSFWorkbook xls = XlsUtils.format(is, args); try { xls.write(out); out.flush(); } catch (IOException e) { e.printStackTrace(); logger.warn("formatTo 写入数据到流错误:" + e.getMessage()); } finally { try { is.close(); out.close(); } catch (IOException ex) { } } } else if ("xlsx".equals(tpl.getTemplateType().getCode()) && "xlsx".equals(extension)) { // Excel2007+ XSSFWorkbook xlsx = XlsxUtils.format(is, args); try { xlsx.write(out); out.flush(); } catch (IOException e) { e.printStackTrace(); logger.warn("formatTo 写入数据到流错误:" + e.getMessage()); } finally { try { is.close(); out.close(); } catch (IOException ex) { } } } else if ("html".equals(tpl.getTemplateType().getCode()) && "html".equals(extension)) { // html String source = FreeMarkerUtils.format(TemplateUtils.loadText(is), args); try { out.write(source.getBytes()); out.flush(); } catch (IOException e) { e.printStackTrace(); logger.warn("formatTo 写入数据到流错误:" + e.getMessage()); } finally { try { is.close(); out.close(); } catch (IOException ex) { } } } else { logger.warn("文件后缀名:" + extension + ",不能formatTo"); try { is.close(); out.close(); } catch (IOException ex) { } } } }