一、需求
根据数据库查询数据生成word报告,可直采数据生成图表,图表类型如下
模版样例:
https://download.csdn.net/download/weixin_42440011/89885130
二、解决方案
1.概念
在开始前,你一定要知道,word中的图表,其实是通过一个内置excel来提供数据的。并且一定要搞清楚以下几个概念:系列,分类,值。下面以上面的柱状图来举例说明:
在空白word文档建一个图表
建好图表后:鼠标右击图表 》编辑数据
通过下面表格式信息可以很清楚的分出系列,分类,值。图中有三条柱,每条柱都表示一个系列;横坐标对应的就是类别;每个类别都有相应的数据,而这个数据也就是值。
2 依赖
理解原理之后我们就可以导入需要的依赖了
<!-- POI-OXML,用于处理Excel和Word文件 (XML文件格式) -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<!-- POI-OXML-Schemas,用于处理复杂功能,如图表等 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<!-- XMLBeans,POI-OXML-Schemas的依赖 -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.1.1</version>
</dependency>
<!-- 避免word文档被编译乱码->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<!-- 打成jar包名称 -->
<finalName>${
project.name}</finalName>
<mainClass>org.gls.realname.sync.RealInfoSyncApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!-- 默认就是repackage 意思是包含依赖jar -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
3.工具类
import cn.afterturn.easypoi.word.WordExportUtil;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.StringUtil;
import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
import org.apache.poi.xddf.usermodel.chart.XDDFDataSource;
import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.util.Assert;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;