Java 如何生成 Excel 柱状图?
我想通过java代码在一个xlsx文件中生成柱状图,并且导出的时候要与Excel兼容。有什么建议吗?
Java 如何生成 Excel 柱状图?
我想通过java代码在一个xlsx文件中生成柱状图,并且导出的时候要与Excel兼容。有什么建议吗?
在Java中生成Excel柱状图,你可以使用Apache POI库,这是一个非常强大的库,可以处理Microsoft Office的所有文件格式。
首先,你需要添加Apache POI库的依赖。如果你使用Maven,你可以在pom.xml
文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version> <!-- 请检查是否有更新的版本 -->
</dependency>
</dependencies>
然后,你可以使用以下代码创建一个柱状图:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xssf.usermodel.charts.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class ExcelChartGenerator {
public static void main(String[] args) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿
XSSFSheet sheet = workbook.createSheet("Chart Data"); // 创建一个新的工作表
final XSSFDrawing drawing = sheet.createDrawingPatriarch(); // 为工作表添加绘图区域
final XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 3, 3, 10, 20); // 创建锚点以放置图表
final XSSFChart chart = drawing.createChart(anchor); // 为工作表添加图表
final XSSFChartLegend legend = chart.getOrCreateLegend(); // 为图表添加图例
legend.setPosition(LegendPosition.BOTTOM); // 设置图例的位置为底部
XSSFChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM); // 创建底部坐标轴
XSSFValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT); // 创建左侧坐标轴
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO); // 设置左侧坐标轴与底部坐标轴交叉于自动零点处
chart.plot(createChartData(), bottomAxis, leftAxis); // 创建并绘制柱状图,使用左侧坐标轴和底部坐标轴
FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); // 创建文件输出流以保存工作簿到文件
workbook.write(fileOut); // 将工作簿写入文件输出流中
fileOut.close(); // 关闭文件输出流
}
private static XSSFChartDataSource<String> createCategoryData() {
List<String> categories = List.of("A", "B", "C", "D", "E"); // 创建类别数据列表
return XSSFDataUtil.createCategoryDataSource(categories); // 返回类别数据源对象
}
private static XSSFChartDataSource<Number> createNumericData() {
List<Double> values = List.of(10, 20, 30, 40, 50); // 创建数值数据列表
return XSSFDataUtil.createValueDataSource(values); // 返回数值数据源对象
}
private static XSSFChartData createChartData() {
XSSFChartData chartData = chartFactory.createBarChartData(); // 创建柱状图数据对象
15 回答8.3k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答4k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
可以通过GcExcel来实现柱状图,GcExcel支持各种Excel图表,具体可以参考:
图表类型 - GcExcel 中文文档Java版 | 服务端高性能表格组件 - 葡萄城
生成柱状图的代码如下: