Java 在Excel中不使用单元格数据创建图表
程序员文章站
2022-03-28 14:41:33
...
在Excel创建图表时,常见情况下,图表生成依赖于表格单元格中的数据源,写入数据到单元格,然后根据单元格数据来创建图表,即数据源关联图表。本文介绍另一种不使用单元格中的数据来创建图表的方法,即在代码中定义数据源数组内容,直接通过数组数据生成图表并添加到Excel表格。
工具使用
- Spire.Xls.jar(这里使用的免费版,注意下载Free Spire.XLS for Java的包,jar文件在解压文件夹lib下面)
- Jdk版本:1.6.0或者更高版本
- IDEA
注意:导入Spire.Xls.jar文件到Java程序可分两种方法,手动导入和maven仓库配置,
1. 手动导入:下载jar包,解压将lib文件夹下的Spire.Xls.jar文件导入。
2. Maven配置导入:配置pom.xml文件(如下),完成配置后,导入
<repositories> <repository> <id>com.e-iceblue</id> <url>http://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.xls.free</artifactId> <version>3.9.1</version> </dependency> </dependencies>
Java代码
import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import java.awt.*; public class CreateChart { public static void main(String[] args) { //创建工作簿 Workbook wb = new Workbook(); //获取第一个工作表(创建工作簿时,已默认包含3个工作表) Worksheet sheet = wb.getWorksheets().get(0); //添加图表,并指定图表类型 Chart chart = sheet.getCharts().add(ExcelChartType.LineMarkersStacked); //添加图表系列 ChartSerie series1 = chart.getSeries().add(); //定义图表生成所需数据 series1.setEnteredDirectlyCategoryLabels(new Object[]{"英国", "美国", "中国", "加拿大", "泰国", "新加坡"}); series1.setEnteredDirectlyValues(new Object[]{254, 221, 438, 158, 250, 300}); //设置图表标题、坐标轴、背景色 chart.setChartTitle("上半年产量(万吨)"); chart.getChartTitleArea().setSize(12); chart.getPrimaryCategoryAxis().setTitle("原产国"); chart.getPrimaryValueAxis().setTitle("产 量"); chart.getPlotArea().getFill().setForeColor(new Color(250,235,215)); //保存文档 wb.saveToFile("result.xlsx", ExcelVersion.Version2013); wb.dispose(); } }