前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用xdocreport导出word饼图

使用xdocreport导出word饼图

原创
作者头像
Java king
发布2023-02-21 18:00:45
1.6K0
发布2023-02-21 18:00:45
举报
文章被收录于专栏:后端Java后端Java

我要做的事,不过是伸手去收割旁人替我播种的庄稼而已。——歌德

需求需要做一个首页统计导出word的功能,但是不仅是word文档,而是对应word模板,替换word内容以及导出饼图,话不多说上代码

1:开始编写代码之前需要弄一下准备工作

代码语言:txt
复制
设置咱们的word模板内容 注意后缀需要docx

这个模板的文字都不重要因为后面会把这些文字都替换掉,输入文字之后按住Ctrl+F9变成编辑域,然后右键编辑域我这里用的WPS编辑模板

文字和列表都是如此设置好变量,如果是列表传个数组就会一一对应。

到了咱们的重头戏饼图了

导出饼图需要一张图片随便一张图片就可以导出的饼图会按照图片的大小来生成

如图1:桃子的图片 这就是我女朋友抱着桃子嘿嘿嘿 然后选中图片点击wps的插入找到右上角的书签

这里chart代表的也是个变量后边会变成咱们想要的数据

2:导入需要的依赖

代码语言:java
复制
		<dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>1.2.0</version> </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.xdocreport.core</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.xdocreport.document</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.xdocreport.template</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.xdocreport.document.docx</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
          <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.23</version>
        </dependency>

3:代码分为两部分第一部分为饼图数据 第二部分为表格数据 根据自己的需求编写

代码语言:txt
复制
这里我写了个demo根据自己需求变成动态数据就好了
代码语言:txt
复制
XDocReportRegistry:引入当前模板
代码语言:txt
复制
fieldsMetadata:对应的key 和 value 咱们可以点进去看一下他的源码 写的还是很容易理解的
代码语言:txt
复制
chart:就是饼图的key
代码语言:txt
复制
info:对应的表格key 我这里用的实体类接收的 所以模板是info.key
代码语言:txt
复制
EasyWordUtil:是我封装用于生生饼图的
代码语言:txt
复制
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20211123090003.png)

4:这里记录一下我踩得坑

首先我上来就遇到一个深坑 xdocreport这个是对模板类型有要求 虽然要求后缀为.docx但是我自己

创建的docx会报:java.io.IOException: InputStream is not a zip.

说文件不是zip文件但是文档要求docx就是没有问题,解决方法就是去找源码并下载他提供的模板

模板下载地址:https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/xdocreport/docxandvelocity.converters-1.0.3-sample.zip

源码:https://github.com/opensagres/xdocreport

XDocReport常见问题以及介绍:https://github.com/opensagres/xdocreport/wiki/FAQ

上面介绍还是很详细的

还有就是一定要对比好模板的变量要一一对应,就不会有问题

5:效果展示

咱们单元测试通过并没有问题

咱们刚才的模板对比生成的word 当然这只是单元测试牛刀小试 功能很强大 还需要大家多多的摸索

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档