This commit is contained in:
caozehui
2025-03-20 13:44:16 +08:00
parent f294cb315f
commit ac0a9dd777
5 changed files with 148 additions and 86 deletions

View File

@@ -39,16 +39,16 @@
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-full</artifactId>
<version>5.2.3</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.apache.poi</groupId>-->
<!-- <artifactId>poi-ooxml</artifactId>-->
<!-- <version>5.2.3</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.poi</groupId>-->
<!-- <artifactId>poi-ooxml-full</artifactId>-->
<!-- <version>5.2.3</version>-->
<!-- </dependency>-->
</dependencies>

View File

@@ -165,7 +165,7 @@ public class SysLogAuditServiceImpl extends ServiceImpl<SysLogAuditMapper, SysLo
XSSFSheet sheet = wb.createSheet("sheet1");
createPieChart(sheet, collect.keySet().stream().collect(Collectors.toList()), collect.values().stream().collect(Collectors.toList()));
//createPieChart(sheet, collect.keySet().stream().collect(Collectors.toList()), collect.values().stream().collect(Collectors.toList()));
wb.write(outputStream);
wb.close();
@@ -174,61 +174,61 @@ public class SysLogAuditServiceImpl extends ServiceImpl<SysLogAuditMapper, SysLo
}
}
/**
* 创建饼图
*
* @param sheet
* @param categoryList
* @param sheetDataList
*/
private void createPieChart(XSSFSheet sheet, List<String> categoryList, List<Long> sheetDataList) {
int row1 = 0;
int row2 = 8;
int col1 = 0;
int col2 = 30;
// 设置图表列宽
for (int i = 0; i < row2; i++) {
sheet.setColumnWidth(i, 6000);
}
//y轴显示数据
String[] headArray = categoryList.stream().collect(Collectors.toList()).toArray(new String[]{});
// Create a chart
XSSFDrawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, col1, row1, row2, col2);
XSSFChart chart = drawing.createChart(anchor);
//标题是否覆盖图表
chart.setTitleOverlay(false);
//设置图表标题
chart.setTitleText("分析结果");
// 创建图表系列
XDDFChartLegend legend = chart.getOrAddLegend();
legend.setPosition(LegendPosition.TOP);
//动态数据
//x轴数据
XDDFDataSource<String> xData = XDDFDataSourcesFactory.fromArray(headArray);
//饼图数据
XDDFPieChartData data = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);
data.setVaryColors(true);
Double[] yArray = sheetDataList.stream().collect(Collectors.toList()).toArray(new Double[]{});
//y轴数据
XDDFNumericalDataSource<Double> yData = XDDFDataSourcesFactory.fromArray(yArray);
XDDFChartData.Series series = data.addSeries(xData, yData);
//series.setTitle("title", null);
series.setShowLeaderLines(true);
// 隐藏图例标识、系列名称、分类名称和数值
XDDFPieChartData.Series s = (XDDFPieChartData.Series) series;
CTPieSer ctPieSer = s.getCTPieSer();
showCateName(ctPieSer, false);
showVal(ctPieSer, false);
showLegendKey(ctPieSer, false);
showSerName(ctPieSer, false);
chart.plot(data);
}
// /**
// * 创建饼图
// *
// * @param sheet
// * @param categoryList
// * @param sheetDataList
// */
// private void createPieChart(XSSFSheet sheet, List<String> categoryList, List<Long> sheetDataList) {
// int row1 = 0;
// int row2 = 8;
// int col1 = 0;
// int col2 = 30;
// // 设置图表列宽
// for (int i = 0; i < row2; i++) {
// sheet.setColumnWidth(i, 6000);
// }
// //y轴显示数据
// String[] headArray = categoryList.stream().collect(Collectors.toList()).toArray(new String[]{});
//
// // Create a chart
// XSSFDrawing drawing = sheet.createDrawingPatriarch();
// ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, col1, row1, row2, col2);
// XSSFChart chart = drawing.createChart(anchor);
// //标题是否覆盖图表
// chart.setTitleOverlay(false);
// //设置图表标题
// chart.setTitleText("分析结果");
// // 创建图表系列
// XDDFChartLegend legend = chart.getOrAddLegend();
// legend.setPosition(LegendPosition.TOP);
//
// //动态数据
// //x轴数据
// XDDFDataSource<String> xData = XDDFDataSourcesFactory.fromArray(headArray);
// //饼图数据
// XDDFPieChartData data = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);
// data.setVaryColors(true);
//
// Double[] yArray = sheetDataList.stream().collect(Collectors.toList()).toArray(new Double[]{});
// //y轴数据
// XDDFNumericalDataSource<Double> yData = XDDFDataSourcesFactory.fromArray(yArray);
// XDDFChartData.Series series = data.addSeries(xData, yData);
//
// //series.setTitle("title", null);
// series.setShowLeaderLines(true);
// // 隐藏图例标识、系列名称、分类名称和数值
// XDDFPieChartData.Series s = (XDDFPieChartData.Series) series;
// CTPieSer ctPieSer = s.getCTPieSer();
// showCateName(ctPieSer, false);
// showVal(ctPieSer, false);
// showLegendKey(ctPieSer, false);
// showSerName(ctPieSer, false);
//
// chart.plot(data);
// }
// 控制值系列名称是否显示
private void showSerName(CTPieSer series, boolean val) {