freemaker生成word文档

  1. 这样是横着的:
					<w:sectPr w:rsidR="00BF219B" w:rsidSect="00EA328D">
						<w:pgSz w:w="16838" w:h="11906" w:orient="landscape"/>
						<w:pgMar w:top="1797" w:right="1440" w:bottom="1797" w:left="1440" w:header="851" w:footer="992" w:gutter="0"/>
						<w:cols w:space="425"/>
						<w:docGrid w:type="lines" w:linePitch="312"/>
					</w:sectPr>
  1. 这样是竖着的:
				<w:sectPr w:rsidR="00BF219B">
						<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:w表示宽度;w:h表示长度,当宽度>长度时页面就是横向的了,可以省略w:orient="landscape"
另外还要注意作用范围,我的经验是<w:tbl>上分写一个竖向的,</w:tbl>下面写一个(似乎要多一个w:rsidSect)横向的,这样作用到table上就是横向的,表格上面的文字部分是竖向的。

  • 对于表格的生成,可以选择1.手动在表格里填占位符,这样比较麻烦而且得提前知道行数;2.利用#list标签参考以下两个链接
    freemarker生成word模版文档及list便利数据(二)
    使用freemarker生成word,步骤详解并奉上源代码
    总结一下用list标签生成word的表格:
    1.在占位符的那一行的<w:tr xxx>标签之上加上<#list newList as listKey>,占位符需要是如${listKey.name1}的形式,行标签结尾</w:tr>后加上</#list>
    2.表格的数据都需要放进 List<Map<String,Object>>中,变量名为newList,最后把该list放入Map中,key值也是“newList”,用for循环来控制插入多少行,如下:
//        加载表格的数据
        List<Map<String,Object>> newList = new ArrayList<Map<String,Object>>();  
        for (int i = 0; i < 10; i++) {  
            Map<String,Object> map = new HashMap<String,Object>();  
//            map.put("all1", i);  
//            map.put("all2", "内容"+i);  
//            map.put("all3", "内容"+i);  
//            map.put("all4", "内容"+i);  
//            map.put("allRate", "内容"+i);  
            map.put("p_name", "内容"+i);  
            map.put("p1_1", i);  
            map.put("p1_2", "内容"+i);  
            map.put("p1_3", "内容"+i);  
            map.put("p1_4", "内容"+i);  
            map.put("p1_rate", "内容"+i);  
            newList.add(map);  
        }  
                  dataMap.put("newList", newList);  
posted @ 2018-03-25 18:34  cashew  阅读(315)  评论(0编辑  收藏  举报