main
黄海 7 months ago
parent 551637eda4
commit 4c849708d2

@ -9,13 +9,18 @@ import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class WordDocumentGenerator {
public class Word_ZheXianTu {
public static void main(String[] args) throws Exception {
//模板
String templatePath = "D:\\word\\line-chart-template.docx";
//目标
String targetFilePath="D:\\word\\test.docx";
//统计图的名称
String chartTitle = "收运量统计图";
//读取模板文件
InputStream is = new FileInputStream(templatePath);
XWPFDocument doc = new XWPFDocument(is);
//模拟统计图数据
//系列
String[] seriesTitles = {"日处理能力(kg)", "湿垃圾(kg)", "干垃圾(kg)"};
@ -33,22 +38,28 @@ public class WordDocumentGenerator {
values.add(value2);
values.add(value3);
XWPFChart xChart = doc.getCharts().get(0);//获取第1个图表
generateChart(xChart, seriesTitles, categories, values);
try (FileOutputStream fos = new FileOutputStream("D:\\word\\test.docx")) {
doc.write(fos);
}
//生成统计图
XWPFChart xChart = doc.getCharts().getFirst();//获取第1个图表
generateChart(chartTitle,xChart, seriesTitles, categories, values);
//保存到目标文件中
FileOutputStream fos = new FileOutputStream(targetFilePath);
doc.write(fos);
fos.close();
}
public static void generateChart(XWPFChart chart, String[] series, String[] categories, List<Number[]> values) {
String chartTitle = "收运量统计图";
final List<XDDFChartData> data = chart.getChartSeries();//不知道这个ChartSeries代表什么意思
final XDDFLineChartData line = (XDDFLineChartData) data.get(0);//这里一般获取第一个,我们这里是折线图就是XDDFLineChartData
/**
*
* @param chartTitle
* @param chart 使
* @param series
* @param categories x
* @param values
*/
public static void generateChart(String chartTitle,XWPFChart chart, String[] series, String[] categories, List<Number[]> values) {
final List<XDDFChartData> data = chart.getChartSeries();
final XDDFLineChartData line = (XDDFLineChartData) data.getFirst();//这里一般获取第一个,我们这里是折线图就是XDDFLineChartData
final int numOfPoints = categories.length;
final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0));
final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, 0);
@ -62,7 +73,6 @@ public class WordDocumentGenerator {
CellReference cellReference = chart.setSheetTitle(series[i], 1);//修改系列标题
ser.setTitle(series[i], cellReference);
}
chart.plot(line);
chart.setTitleText(chartTitle);//折线图标题
chart.setTitleOverlay(false);

Binary file not shown.

@ -0,0 +1 @@
dsideal01/Superadmin@123
Loading…
Cancel
Save