Java的XWPFTemplate工具类导出word.docx的使用

这篇具有很好参考价值的文章主要介绍了Java的XWPFTemplate工具类导出word.docx的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

依赖

<!-- word导出 -->
        <dependency>
            <groupId>com.deepoove</groupId>
            <artifactId>poi-tl</artifactId>
            <version>1.7.3</version>
        </dependency>
        <!--  上面需要的依赖-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

代码

基础语法

public void aaa() {
        String filePath = "D:\\test\\巡查日志.docx";
        XWPFTemplate template = XWPFTemplate.compile(filePath);
        // 填充数据
        Map<String, Object> data = new HashMap<>();
        data.put("inspectionTime", "(1)第一行\n(2)第二行");
        data.put("deptName", 123);
        // 读取本地磁盘图片
        data.put("weChatPicture", new PictureRenderData(100, 100, "C:\\Users\\Administrator\\Pictures\\16194037861239194.jpg"));
        // 通过url读取网络图片
        data.put("picture", new PictureRenderData(200, 400, ".png", BytePictureUtils.getUrlByteArray("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png")));
        template.render(data);
        File file = new File("D:\\test\\test1.docx");
        // 保存Word文档
        FileOutputStream out = new FileOutputStream(file);
        template.write(out);
        out.close();
    }

模板使用{{占位符}}

图片{{@占位符}}

换行\n

 

xwpftemplate.compile,java,word,c#

图片和文字遍历使用

读取文字:{{?photoCollection}}{{pho}}{{/photoCollection}}

读取照片:{{?photoCollection}} {@{pho}} {{/photoCollection}}

特别注意:读取照片的时候需要有一个空格才会显示,找了好久的问题,最后加一个空格解决了

文字
public static void main(String[] args) throws IOException {

        String filePath = "D:\\test\\巡查日志.docx";
        XWPFTemplate template = XWPFTemplate.compile(filePath);
        Map<String, Object> map = new HashMap<>();

        List<Map<String,Object>> maps1 = new ArrayList<>();
        for (int i = 1; i <= 5; i++) {
            Map<String,Object> m = new HashMap<>();
            m.put("pho",", 哈哈哈"+i);
            maps1.add(m);
        }

        map.put("photoCollection", maps1);

        template.render(map);

        File file = new File("D:\\test\\test1.docx");
        FileOutputStream out = new FileOutputStream(file);
        template.write(out);
        out.close();
    }
照片

public static void main(String[] args) throws IOException {

        String filePath = "D:\\test\\巡查日志.docx";
        XWPFTemplate template = XWPFTemplate.compile(filePath);
        Map<String, Object> map = new HashMap<>();

        List<Map<String,Object>> maps1 = new ArrayList<>();
        for (int i = 1; i <= 5; i++) {
            Map<String,Object> m = new HashMap<>();
            // 读取本地磁盘图片
            m.put("pho", new PictureRenderData(30, 30, "C:\\Users\\28430\\Pictures\\Camera Roll\\1.jpg"));
            maps1.add(m);
        }

        map.put("photoCollection", maps1);
        map.put("pho1", new PictureRenderData(100, 100, "C:\\Users\\28430\\Pictures\\Camera Roll\\1.jpg"));


        template.render(map);

        File file = new File("D:\\test\\test1.docx");
        FileOutputStream out = new FileOutputStream(file);
        template.write(out);
        out.close();
    }

xwpftemplate.compile,java,word,c#

列表的使用

public static void main(String[] args) throws IOException {


        DecimalFormat df = new DecimalFormat("######0.00");
        Calendar now = Calendar.getInstance();
        double money = 0;//总金额
        //组装表格列表数据
        List<Map<String,Object>> detailList=new ArrayList<Map<String,Object>>();
        for (int i = 0; i < 6; i++) {
            Map<String,Object> detailMap = new HashMap<String, Object>();
            detailMap.put("index", i+1);//序号
            detailMap.put("title", "商品"+i);//商品名称
            detailMap.put("product_description", "套");//商品规格
            detailMap.put("buy_num", 3+i);//销售数量
            detailMap.put("saleprice", 100+i);//销售价格

            double saleprice=Double.parseDouble(String.valueOf(100+i));
            int buy_num= Integer.parseInt(String.valueOf(3 + i));
            String buy_price=df.format(saleprice*buy_num);
            detailMap.put("buy_price", buy_price);//单个商品总价格
            money=money+Double.parseDouble(buy_price);

            detailList.add(detailMap);
        }
        //总金额
        String order_money=String.valueOf(money);


        String filePath = "D:\\test\\order12.docx";
        //渲染表格
        HackLoopTableRenderPolicy  policy = new HackLoopTableRenderPolicy();
        Configure config = Configure.newBuilder().bind("detailList", policy).build();
        Map<String,Object> map = new HashMap<>();

        map.put("detailList", detailList);
        map.put("order_number", "2356346346645");
        map.put("y", now.get(Calendar.YEAR));//当前年
        map.put("m", (now.get(Calendar.MONTH) + 1));//当前月
        map.put("d", now.get(Calendar.DAY_OF_MONTH));//当前日
        map.put("order_money",order_money);//总金额
        XWPFTemplate template = XWPFTemplate.compile(filePath, config).render(map);

        File file = new File("D:\\test\\test1.docx");
        FileOutputStream out = new FileOutputStream(file);
        template.write(out);
        out.close();
    }

xwpftemplate.compile,java,word,c#

xwpftemplate.compile,java,word,c#文章来源地址https://www.toymoban.com/news/detail-808372.html

到了这里,关于Java的XWPFTemplate工具类导出word.docx的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java使用apache.poi导出word文件

    功能说明: 将试卷导出word,并可以打印,装订,效果图: 下面是实现代码:

    2024年02月15日
    浏览(36)
  • java使用poi-tl导出word及转换PDF后的合并导出pdf

    为某单位开发的一款项目申报审批系统,用户需求在申报阶段填写的信息资料能够导出PDF。且项目申报的报告正文为用户上传,所以需要合并导出。 在项目初期阶段使用的是PDF的预设模板导出,因为以前使用过,比较熟悉。所以优先选择此方法,但项目测试阶段发现问题,因

    2024年02月06日
    浏览(62)
  • vue 使用docx库生成word表格文档

            在Vue.js中生成Word表格文档,可以通过前端库来实现。这些库可以帮助我们轻松地将HTML表格转换为Word文档(通常是.docx格式)。以下是一些流行的前端库,它们可以用于在Vue项目中生成Word表格文档:                  docx是一个流行的JavaScript库,用于在浏览

    2024年02月21日
    浏览(43)
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)

    这篇文章,主要介绍如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 (1)引入依赖 (2)创建Freemarker工具类 (3)测试案例代码 (4)运行效果 Word文件有两种后缀格式,分别是:doc和docx,

    2024年02月13日
    浏览(45)
  • 使用OpenXML库替换docx文档(Word文档)中的特定字段

    在批量生成Word文档的应用中,最常见的需求莫过于替换掉文档中的特定字段以生成新的文档。利用OpenXML库可轻松实现这一需求。 首先放出最简单然而有bug的版本: 该版本的原理是遍历word文档中的每个段落,搜索段落中的每个文字字段对象,如果找到匹配的值就将其替换成

    2024年02月11日
    浏览(33)
  • java 导出word,java根据提供word模板导出word文档

    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概念讲解(api自行查阅文档)。 这样便于快速展示,不符合你的业务需求的可以直接划走

    2024年02月14日
    浏览(31)
  • 【python】使用docx获取word文档的标题等级、大纲等级和编号等级

    在Microsoft Word中: 【标题X】是一个样式,一般来说,【标题1】样式的大纲级别是1级。 大纲级别一般用于页面导航和生成目录。可以右键文字-段落里查看/设置大纲的级别。设置成【x级】后左侧导航栏就会显示。 编号等级就是大家熟知的项目编号,常用于正文。 基本没有一

    2024年02月03日
    浏览(30)
  • java导出word套打

     这篇文档手把手教你完成导出word套打,有这个demo,其他word套打导出都通用。  1、主要依赖  2、 模板excel见附件。 3、以下为导出代码逻辑: 4、导出效果: 注意事项 :如果你调整了代码设置数据,但是没生效,把target目录下的class文件删除重启哈就生效了。 ==============

    2024年01月19日
    浏览(23)
  • Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

    一、写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊。 https://blog.csdn.net/weixin_43238452/article/details/109636200?spm=1001.2014.3001.5501 下面介绍一下应用场景:这次项目依旧是springboot项目,使用ftl模版生

    2024年02月15日
    浏览(42)
  • java根据模板导出word

    日常开发中,常常会遇到各种各样的表格进行导出,比较好的办法就是提前弄好word模版,再通过遍历的方式进行导出文档 模版编写 内容替换 目标下面模版进行多页展示 将word转换成xml 将xml格式化 再将xml改成ftl xml格式化地址 list找到起始位置和结束位置 起始位置插入#list

    2024年02月15日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包