Apache POI 5.2.2 版本添加次要数据系列代码示例
在 Apache POI 中,可以使用 'XDDFChartData' 和 'XDDFDataSource' 类来添加次要数据系列。
以下是一个示例代码,演示如何在 Apache POI 中添加次要数据系列:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xddf.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class AddSecondaryDataSeries {
public static void main(String[] args) throws Exception {
// 创建工作簿和工作表
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Chart");
// 创建数据
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Category");
row1.createCell(1).setCellValue("Primary Value");
row1.createCell(2).setCellValue("Secondary Value");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("A");
row2.createCell(1).setCellValue(10);
row2.createCell(2).setCellValue(20);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("B");
row3.createCell(1).setCellValue(20);
row3.createCell(2).setCellValue(30);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("C");
row4.createCell(1).setCellValue(30);
row4.createCell(2).setCellValue(40);
// 创建图表
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 4, 1, 10, 15);
Chart chart = drawing.createChart(anchor);
// 创建图表数据
ChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.BOTTOM);
LineChartData data = chart.getChartDataFactory().createLineChartData();
// 创建主要数据系列
ChartDataSource<Number> primaryCategory = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 3, 0, 0));
ChartDataSource<Number> primaryValues = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 3, 1, 1));
XDDFLineChartData.Series primarySeries = (XDDFLineChartData.Series) data.addSeries(primaryCategory, primaryValues);
primarySeries.setTitle("Primary Series", null);
// 创建次要数据系列
ChartDataSource<Number> secondaryValues = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 3, 2, 2));
XDDFLineChartData.Series secondarySeries = (XDDFLineChartData.Series) data.addSeries(primaryCategory, secondaryValues);
secondarySeries.setTitle("Secondary Series", null);
// 设置图表样式
XDDFCategoryAxis categoryAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
XDDFValueAxis primaryValueAxis = chart.createValueAxis(AxisPosition.LEFT);
XDDFValueAxis secondaryValueAxis = chart.createValueAxis(AxisPosition.RIGHT);
primaryValueAxis.setCrosses(secondaryValueAxis);
secondaryValueAxis.setCrosses(primaryValueAxis);
chart.plot(data);
// 保存工作簿
workbook.write(new FileOutputStream("chart.xlsx"));
workbook.close();
}
}
在此示例中,我们创建了一个包含主要数据系列和次要数据系列的线形图。主要数据系列使用列 B 中的数据,次要数据系列使用列 C 中的数据。
原文地址: https://www.cveoy.top/t/topic/fSXY 著作权归作者所有。请勿转载和采集!