【发布时间】:2018-10-11 12:20:04
【问题描述】:
目前正在使用 POI 生成散点图,但是图表很奇怪: 左上角是使用我的代码生成的,另一个是在 Excel 中手动生成的。 它们都是“带有直线和标记的散点图”类型,但是生成的图表由于某种原因显示了曲线。另一个问题是每个数据点都在图例中单独列出,并被赋予了另一种颜色。
public void GenerateChart(XSSFSheet sheet) {
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
XSSFChart chart = drawing.createChart(anchor);
XSSFChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.TOP_RIGHT);
XSSFValueAxis bottomAxis = chart.createValueAxis(AxisPosition.BOTTOM);
XSSFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
CellRangeAddress crXData = new CellRangeAddress(1, sheet.getLastRowNum(), 0, 0);
CellRangeAddress crYData = new CellRangeAddress(1, sheet.getLastRowNum(), 1, 1);
CellReference crTitle = new CellReference(0,1);
Cell cell = sheet.getRow(crTitle.getRow()).getCell(crTitle.getCol());
ChartDataSource<Number> dsXData = DataSources.fromNumericCellRange(sheet, crXData);
ChartDataSource<Number> dsYData = DataSources.fromNumericCellRange(sheet, crYData);
XSSFScatterChartData data = chart.getChartDataFactory().createScatterChartData();
ScatterChartSeries seriesTitler = data.addSerie(dsXData, dsYData);
seriesTitler.setTitle(cell.getStringCellValue());
chart.plot(data, bottomAxis, leftAxis);
}
使用 Apache POI 3.17
文档here 显示XSSFScatterChartData 和其他文件已被弃用,我应该改用XDDFScatterChartData。但是我不知道从哪里得到 .jar 来使用它。我假设它处于测试阶段?
我想要做的是生成类似于图像右侧图表的东西,即手动创建的图表。由于允许创建图表的 POI 似乎是一个相对较新的事物,因此我一直无法找到任何线索。有人知道诀窍吗?
【问题讨论】:
标签: java excel graph charts apache-poi