当前位置: 首页 > wzjs >正文

深圳营销型网站建设服务商企业公示网

深圳营销型网站建设服务商,企业公示网,设计类专业笔记本电脑推荐,wordpress 公司门户word模板导出 最近项目中有个功能,导出月报,发现同事使用了docx格式模板,感觉比之前转成xml的简单多了,这边记录下使用方法。 xml方式导出word,模板太复杂了 资料 poi-tl 一个基于Apache POI的Word模板引擎,也是一个免费开源的Jav…

word模板导出

最近项目中有个功能,导出月报,发现同事使用了docx格式模板,感觉比之前转成xml的简单多了,这边记录下使用方法。
xml方式导出word,模板太复杂了

资料

poi-tl

一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性


官方文档地址 ,还是很详细的,有多个场景的示例

如何使用

  • 必要的标签知识
    • 文字

    {{var}}

    • 数据模型:
     String :文本TextRenderData :有样式的文本HyperlinkTextRenderData :超链接和锚点文本Object :调用 toString() 方法转化为文本
    
    • 图片

      图片标签以@开始:{{@var}}

      • 数据模型:
      String :图片url或者本地路径,默认使用图片自身尺寸ByteArrayPictureRenderDataFilePictureRenderDataUrlPictureRenderData
      
    • 表格行循环

      配合插件-LoopRowTableRenderPolicy

    • 图标

      • 多系列图表指的是条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图、散点图等

      数据模型ChartMultiSeriesRenderData

      • 单系列图表指的是饼图(3D饼图)、圆环图等。
  • 引入依赖
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.2</version></dependency>
  • 简单的demo
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.ChartMultiSeriesRenderData;
import com.deepoove.poi.data.Charts;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.Pictures;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.deepoove.poi.policy.RenderPolicy;
import org.springframework.stereotype.Service;import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @program: learn_summary* @description:* @author: zzg@xnj* @create: 2025-03-10 15:58**/
@Service
public class WordService {public  void makeWord(){HashMap<String, Object> dates = new HashMap<>();//字符串String wenzi="这个是文字";dates.put("wenzi", wenzi);//单个图片
//        dates.put("pic", Pictures.ofUrl( "https://img.tukuppt.com/ad_preview/00/10/23/5c992ae114e20.jpg!/fw/980").size(200, 200).create());dates.put("pic", "https://img.tukuppt.com/ad_preview/00/10/23/5c992ae114e20.jpg!/fw/980");//多个图片ArrayList<String> urls = new ArrayList<>();urls.add("https://pic.52112.com/2020/04/13/JPG-200413_328/gCaPae4zjp_small.jpg");urls.add("https://img.tukuppt.com/ad_preview/00/10/23/5c992ae114e20.jpg!/fw/980");dates.put("pictures",  createPictureList("picture",urls,200,200));//插件使用HashMap<String, RenderPolicy> policyHashMap = new HashMap<>();//表格 使用LoopRowTableRenderPolicyLoopRowTableRenderPolicy loopRowTableRenderPolicy = new LoopRowTableRenderPolicy();ArrayList<HashMap<String, String>> tables = new ArrayList<>();HashMap<String, String> map = new HashMap<>();map.put("name", "大豆");map.put("count", "18");map.put("price", "100");tables.add(map);map = new HashMap<>();map.put("name", "黄豆");map.put("count", "38");map.put("price", "110");tables.add(map);dates.put("goods",tables);policyHashMap.put("goods", loopRowTableRenderPolicy);//图表ChartMultiSeriesRenderData chart = Charts.ofMultiSeries("商品售卖情况", new String[] { "大豆", "黄豆" }).addSeries("北京", new Double[] { 15.0, 6.0 }).addSeries("上海", new Double[] { 223.0, 119.0 }).create();dates.put("barChart", chart);try {WordService.createWordOfList("E:\\data\\text2.doc",new FileInputStream("E:\\data\\word_template.docx"),dates,policyHashMap);} catch (FileNotFoundException e) {e.printStackTrace();}}private List<Map<String, PictureRenderData>> createPictureList(String mapKey,List<String> urls,int width, int height) {List<Map<String, PictureRenderData>> list = new ArrayList<>();for (String url : urls) {list.add(createPictureMap(mapKey,url, width, height));}return list;}private Map<String, PictureRenderData> createPictureMap(String mapKey,String imgUrl, int width, int height) {Map<String, PictureRenderData> map = new HashMap<>();map.put(mapKey, Pictures.ofUrl( imgUrl).size(width, height).create());return map;}/*** 创建word文档* @param outputPath 输出路径* @param templatePath 模板路径* @param data 数据* @param placeholderPolicy 占位标签使用插件* @return*/public static boolean createWordOfList(String outputPath, InputStream templatePath, Map<String, Object> data, Map<String, RenderPolicy> placeholderPolicy)   {try {FileOutputStream out = new FileOutputStream(outputPath);BufferedOutputStream bos = new BufferedOutputStream(out);// 使用Configure.ConfigureBuilder而不是BuilderConfigureBuilder builder = Configure.builder();// 动态绑定插件if (placeholderPolicy!=null) {for (Map.Entry<String, RenderPolicy> entry : placeholderPolicy.entrySet()) {builder.bind(entry.getKey(), entry.getValue());}}Configure configure = builder.build();// 读取模板并渲染数据XWPFTemplate template = XWPFTemplate.compile(templatePath, configure).render(data);try {template.write(bos);template.close();} catch (Exception e) {e.printStackTrace();return false;}out.flush();bos.flush();} catch (Exception e) {e.printStackTrace();return false;}return true;}}
  • 模板
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
http://www.dtcms.com/wzjs/811612.html

相关文章:

  • 长春营销型网站设计wordpress金融公司主题
  • 浙江专业网页设计免费建站网站开发集成软件
  • 惠州做网站广告网站地址ip域名查询
  • 金顺广州外贸网站建设网站建设公司收费
  • 企业网站设计收费网站做的二维码失效了
  • 各大网站免费观看京东云擎 wordpress 二级域名
  • 地方门户网站推广网站建设接外包流程图
  • 网站建设费用上海哪里办网站不用备案
  • php网站开发过程shopify是什么平台
  • 模板建站和定制网站的对比中国设计网官网图标
  • 网站建设 镇江丹阳网站管理制度规范
  • 网站制作模板教案南昌网站建设技术托管
  • 做网站 二维码登录赣州经济
  • 沈阳哪家做网站最好那个网站做直播好
  • 邢台柏乡县建设局网站wordpress四川华体
  • 山东专业网站开发公司公关公司排行榜
  • dedecms行业门户网站模板国家网站标题颜色搭配
  • 天津建设教育培训中心网站wordpress远程下载
  • 固定ip如何做网站服务器网站建设课程设计文献综述
  • 泰州模板建站哪家好深度网营销型网站建设公司怎么样
  • 新站seo快速排名 排名设计网站中如何设置特效
  • dedecms手机网站网站建设 熊掌号
  • 唐河网站建设全国最火的加盟项目
  • 深圳三玉网站建设苍南最新发布请配合
  • 福州seo网站建设宣传类的网站
  • 网站举报能不能查到举报人企业网络营销策略
  • 西安网站开发建设华为sdn企业解决方案
  • 网站建设价格标准渠道外贸营销单页网站
  • jsp网站开发与数据库连接优秀的国内企业网站
  • 0网站建设公司宣传册如果给公司做网站