freemarker模板怎么同时打印多份(freeMarker动态生成表格已有固定表头)

在已经有表头的情况下,动态生成表格数据:,下面我们就来聊聊关于freemarker模板怎么同时打印多份?接下来我们就一起去了解一下吧!

freemarker模板怎么同时打印多份(freeMarker动态生成表格已有固定表头)

freemarker模板怎么同时打印多份

在已经有表头的情况下,动态生成表格数据:

ftl标签代码:

<#list partnerList> <#items as partnerInfo> <w:tr> <w:tblPrEx> <w:tblBorders> <w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/> <w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/> <w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/> <w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/> <w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/> <w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/> </w:tblBorders> <w:tblCellMar> <w:top w:w="0" w:type="dxa"/> <w:left w:w="108" w:type="dxa"/> <w:bottom w:w="0" w:type="dxa"/> <w:right w:w="108" w:type="dxa"/> </w:tblCellMar> </w:tblPrEx> <w:tc> <w:tcPr> <w:tcW w:w="1125" w:type="pct"/> <w:noWrap w:val="0"/> <w:vAlign w:val="top"/> </w:tcPr> <w:p> <w:pPr> <w:pStyle w:val="19"/> <w:pageBreakBefore w:val="0"/> <w:tabs> <w:tab w:val="left" w:pos="702"/> <w:tab w:val="left" w:pos="8681"/> </w:tabs> <w:kinsoku/> <w:wordWrap/> <w:overflowPunct/> <w:toplinePunct w:val="0"/> <w:bidi w:val="0"/> <w:snapToGrid/> <w:spacing w:after="0" w:afterAutospacing="0" w:line="360" w:lineRule="auto"/> <w:jc w:val="center"/> <w:textAlignment w:val="auto"/> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> </w:pPr> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> <w:t xml:space="preserve">${partnerInfo.partnerName}</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="938" w:type="pct"/> <w:noWrap w:val="0"/> <w:vAlign w:val="top"/> </w:tcPr> <w:p> <w:pPr> <w:pStyle w:val="19"/> <w:pageBreakBefore w:val="0"/> <w:tabs> <w:tab w:val="left" w:pos="702"/> <w:tab w:val="left" w:pos="8681"/> </w:tabs> <w:kinsoku/> <w:wordWrap/> <w:overflowPunct/> <w:topLinePunct w:val="0"/> <w:bidi w:val="0"/> <w:snapToGrid/> <w:spacing w:after="0" w:afterAutospacing="0" w:line="360" w:lineRule="auto"/> <w:jc w:val="center"/> <w:textAlignment w:val="auto"/> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> </w:pPr> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> <w:t xml:space="preserve">${partnerInfo.partnerPosition}</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="1781" w:type="pct"/> <w:noWrap w:val="0"/> <w:vAlign w:val="top"/> </w:tcPr> <w:p> <w:pPr> <w:pStyle w:val="19"/> <w:pageBreakBefore w:val="0"/> <w:tabs> <w:tab w:val="left" w:pos="702"/> <w:tab w:val="left" w:pos="8681"/> </w:tabs> <w:kinsoku/> <w:wordWrap/> <w:overflowPunct/> <w:topLinePunct w:val="0"/> <w:bidi w:val="0"/> <w:snapToGrid/> <w:spacing w:after="0" w:afterAutospacing="0" w:line="360" w:lineRule="auto"/> <w:jc w:val="center"/> <w:textAlignment w:val="auto"/> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> </w:pPr> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> <w:t xml:space="preserve">${partnerInfo.partnerIdCard}</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="1154" w:type="pct"/> <w:noWrap w:val="0"/> <w:vAlign w:val="top"/> </w:tcPr> <w:p> <w:pPr> <w:pStyle w:val="19"/> <w:pageBreakBefore w:val="0"/> <w:tabs> <w:tab w:val="left" w:pos="702"/> <w:tab w:val="left" w:pos="8681"/> </w:tabs> <w:kinsoku/> <w:wordWrap/> <w:overflowPunct/> <w:topLinePunct w:val="0"/> <w:bidi w:val="0"/> <w:snapToGrid/> <w:spacing w:after="0" w:afterAutospacing="0" w:line="360" w:lineRule="auto"/> <w:jc w:val="center"/> <w:textAlignment w:val="auto"/> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> </w:pPr> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/> <w:color w:val="auto"/> <w:sz w:val="24"/> <w:szCs w:val="24"/> <w:highlight w:val="none"/> <w:vertAlign w:val="baseline"/> <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="en-US"/> </w:rPr> <w:t xml:space="preserve">${partnerInfo.partnerRemark}</w:t> </w:r> </w:p> </w:tc> </w:tr> </#items> </#list>

java代码:

public class WordExportUtil { private static Logger LOGGER = LoggerFactory.getLogger(WordExportUtil.class); private static WordExportUtil service = null; private WordExportUtil() { super(); } static WordExportUtil getInstance() { if (service == null) { synchronized (WordExportUtil.class) { if (service == null) { service = new WordExportUtil(); } } } return service; } /** * @param templateFilePath eg: /template/test/test.ftl * @param dataMap * @param exportFilePath eg: /tmp/test/test123.doc * @param loadType 设置路径加载方式。1-绝对路径,2-项目相对路径 * @return * @throws Exception */ File createDocFile(String templateFilePath, Map<String, Object> dataMap, String exportFilePath, int loadType) throws Exception { Template t = null; configuration configuration = new Configuration(Configuration.VERSION_2_3_22); configuration.setDefaultEncoding("UTF-8"); try { templateFilePath = pathReplace(templateFilePath); String ftlPath = templateFilePath.substring(0, templateFilePath.lastIndexOf("/")); if (loadType == 1) { configuration.setDirectoryForTemplateLoading(new File(ftlPath)); // FTL文件所存在的位置 } else { configuration.setClassForTemplateLoading(this.getClass(), ftlPath);//以类加载的方式查找模版文件路径 } String ftlFile = templateFilePath.substring(templateFilePath.lastIndexOf("/") 1); t = configuration.getTemplate(ftlFile); // 模板文件名 File outFile = new File(exportFilePath); Writer out = null; out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); t.process(dataMap, out); } catch (Exception e) { LOGGER.error("导出word文档出错", e); throw e; } return null; } /** * 把路径的\替换成/ * * @param path * @return */ private String pathReplace(String path) { while (path != null && path.contains("\\")) { path = path.replace("\\", "/"); } return path; } public static void main(String[] args) { Map<String, Object> dataMap = new HashMap<String, Object>(); getData(dataMap); String templateFile = "C:\\Users\\admin\\Desktop\\文档\\方案--完整版2.ftl"; String exportFile = "C:\\Users\\admin\\Desktop\\生成文档名称" ".doc"; try { WordExportUtil.getInstance().createDocFile(templateFile, dataMap, exportFile, 1); } catch (Exception e) { e.printStackTrace(); } } public static void getData(Map<String, Object> dataMap) { List<PartnerInfo> partnerList = new ArrayList<>(); PartnerInfo partnerInfo1 = new PartnerInfo("1", "2", "2", "3"); PartnerInfo partnerInfo2 = new PartnerInfo("1","2","2","3"); PartnerInfo partnerInfo3 = new PartnerInfo("1","2","2","3"); partnerList.add(partnerInfo1); partnerList.add(partnerInfo2); partnerList.add(partnerInfo3); dataMap.put("partnerList", partnerList); } }

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页