POI导出word

这篇博客介绍了如何利用Apache POI库来创建和填充Word模板,包括插入姓名、图片、性别、生日等个人信息,并能处理列表项如大事件和参加节目的表格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • jar包:
<!-- 模版引擎用到的jar包 -->
   <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
    </dependency>

    <dependency>
      <groupId>com.deepoove</groupId>
      <artifactId>poi-tl</artifactId>
      <version>1.3.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-scratchpad</artifactId>
      <version>3.17</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>ooxml-schemas</artifactId>
      <version>1.3</version>
    </dependency>
  • 测试代码:
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.*;
import com.deepoove.poi.util.BytePictureUtils;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Angus
 * @version 1.0
 * @Title: JingzhouDayReportDaemon 荆州日报生成word
 * @Description: TODO
 * @date 2018/10/10 16:14
 */
public class JingzhouDayReportDaemon {


    private void test() throws IOException {
        //图片路径,请注意你是linux还是windows
        String wordPath="C:\\Users\\Administrator\\Desktop\\";
        String modelName="人物模板.docx";
        String outputName="hanyunxi.docx";
        Map<String, Object> datas = new HashMap<String, Object>() {
            {
                //本地图片
                put("name","鞠婧祎");
                put("team","前SNH48");
                put("gender","女");
                put("birthday","19940618");
                put("remark","鞠婧祎,1994年6月18日出生于四川遂宁,毕业于四川音乐学院附属中学,中国女演员、歌手,原SNH48 TEAM NII成员[1]。2013年9月5日,升格为SNH48 TEAM NII二期生正式成员;11月2日,以《剧场女神》公演正式出道。2014年6月7日,拍摄个人首支MV《足球派对》;7月26日,参加SNH48“一心向前”演唱会暨SNH48第一届总选举,演唱《流着泪微笑》并获SNH48总选举第四名。2015年1月15日,发行出道两周年EP《青春的约定》。2016年12月10日,获“星光大赏”年度新锐电视剧女演员。2017年1月1日,参加安徽卫视《国剧盛典》;3月27日,获第24届东方风云榜音乐盛典“年度飞跃歌手”奖[2];5月4日,获团中央“五四优秀青年”称号;5月25日,发行第二张个人EP《等不到你》;[3]7月29日,参加“我心翱翔”第四届总选举发布演唱会,获得SNH48第四届总选举第1名;[4]12月15日,SNH48官方宣布,鞠婧祎正式从SNH48 Group单飞、成立个人工作室。2018年3月26日,获第25届《东方风云榜》音乐盛典年度跨界艺人奖。7月28日,参加湖南卫视综艺节目《快乐大本营》。");
                put("active",new NumbericRenderData(new ArrayList<TextRenderData>(){{
                    add(new TextRenderData("FF00FF", "2013年 以《剧场女神》公演正式出道"));
                    add(new TextRenderData("FF00FF", "2014年 拍摄个人首支MV《足球派对》"));
                    add(new TextRenderData("FF00FF", "2015年 发行出道两周年EP《青春的约定》"));
                    add(new TextRenderData("FF00FF", "2016年 主演玄幻剧《九州天空城》"));
                }}));
                put("tables", new TableRenderData(new ArrayList<RenderData>(){{
                    add(new TextRenderData("d0d0d0", "节目"));
                    add(new TextRenderData("d0d0d0", "次数"));
                }}, new ArrayList<Object>(){{
                    add("《SNH星剧院公演》;999");
                    add("《敢ZUO敢为女声秀》;4");
                    add("《快乐大本营》;2");
                }}, "no datas", 10600));
//				//网路图片
                put("picture", new PictureRenderData(200, 250, ".png", BytePictureUtils.getUrlByteArray("https://pic.baike.soso.com/ugc/baikepic2/18293/cut-20170602162513-2088410512.jpg/300")));

            }
        };

        XWPFTemplate template = XWPFTemplate.compile(wordPath+modelName)
                .render(datas);
        FileOutputStream out;
        try {
            out = new FileOutputStream(wordPath+outputName);
            template.write(out);
            out.flush();
            out.close();
            template.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        new JingzhouDayReportDaemon().test();
    }
}
  • 模版文件
    {{name}}

照片 {{@picture}}
性别 {{gender}}
生日 {{birthday}}
简介 {{remark}}
大事件
{{*active}}
参加节目
{{#tables}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值