条形图是图表的一种,可以等宽但不同长度的水平矩形条的形式展示或汇总数据。在 ms excel 中,条形图可以用于对不同数据组的数据进行比较,帮助用户快速分析数据并得出结论。本文将介绍如何使用 spire.xls for java 通过代码在 excel 工作表中创建簇状条形图或堆积条形图。
安装 spire.xls for java
首先,您需要在 java 程序中添加 spire.xls for java 文件作为依赖项。jar 文件可以从此链接下载。如果您使用 maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 jar 文件。
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.xls
13.6.0
在 excel 工作表中创建簇状条形图
簇状条形图中,不同系列的数据并排显示在单独的条形中,可方便对各个类别的多项数据系列直接进行比较。
以下是在 excel 工作表中创建簇状条形图的详细步骤:
- 创建一个 workbook 类的对象。
- 用 workbook.getworksheets().get() 方法通过索引获取指定工作表。
- 在指定的单元格中添加数据并设置单元格样式。
- 用 worksheet.getcharts().add(excelcharttype.barclustered) 方法在指定的工作表中创建一个 2d 簇状条形图。
- 用 chart.setdatarange(cellrange datarange) 方法设置簇状条形图的数据范围。
- 设置簇状条形图的位置和标题。
- 用 chart.getprimarycategoryaxis() 方法获取簇状条形图的类别轴,然后使用 chartcategoryaxis 类下的方法设置类别轴的展示文本和标题。
- 用 chart.getprimaryvalueaxis() 方法获取簇状条形图的数据轴,然后使用 chartvalueaxis 类下的方法设置数据轴的标题、最小值和网格线。
- 循环遍历簇状条形图的各个数据类别,然后通过将 chartserie.getdatapoints().getdefaultdatapoint().getdatalabels().hasvalue() 方法的值设置为 true 来显示每个数据类别的数据点标签。
- 用 chart.getlegend().setposition() 方法设置簇状条形图图例的位置。
- 用 workbook.savetofile() 方法保存结果文件。
- java
import com.spire.xls.*;
import com.spire.xls.charts.chartserie;
import com.spire.xls.charts.chartseries;
import java.awt.*;
public class createclusterbarchart {
public static void main(string[] args) {
//创建一个workbook类的对象
workbook workbook = new workbook();
//获取第一个工作表
worksheet sheet = workbook.getworksheets().get(0);
//向指定单元格插入数据
sheet.getcellrange("a1").setvalue("国家");
sheet.getcellrange("a2").setvalue("古巴");
sheet.getcellrange("a3").setvalue("墨西哥");
sheet.getcellrange("a4").setvalue("法国");
sheet.getcellrange("a5").setvalue("德国");
sheet.getcellrange("b1").setvalue("六月");
sheet.getcellrange("b2").setnumbervalue(60000);
sheet.getcellrange("b3").setnumbervalue(80000);
sheet.getcellrange("b4").setnumbervalue(90000);
sheet.getcellrange("b5").setnumbervalue(85000);
sheet.getcellrange("c1").setvalue("八月");
sheet.getcellrange("c2").setnumbervalue(30000);
sheet.getcellrange("c3").setnumbervalue(20000);
sheet.getcellrange("c4").setnumbervalue(60000);
sheet.getcellrange("c5").setnumbervalue(35000);
//设置单元格样式
sheet.getcellrange("a1:c1").setrowheight(15);
sheet.getcellrange("a1:c1").getcellstyle().setcolor(color.darkgray);
sheet.getcellrange("a1:c1").getcellstyle().getexcelfont().setcolor(color.white);
sheet.getcellrange("a1:c5").getcellstyle().setverticalalignment(verticalaligntype.center);
sheet.getcellrange("a1:c5").getcellstyle().sethorizontalalignment(horizontalaligntype.center);
//设置数值格式
sheet.getcellrange("b2:c5").getcellstyle().setnumberformat("\"¥\"#,##0");
//在此工作表中插入一个簇状条形图
chart chart = sheet.getcharts().add(excelcharttype.barclustered);
//设置簇状条形图的数据范围
chart.setdatarange(sheet.getcellrange("a1:c5"));
chart.setseriesdatafromrange(false);
//设置簇状条形图的位置
chart.setleftcolumn(1);
chart.settoprow(6);
chart.setrightcolumn(11);
chart.setbottomrow(29);
//设置簇状条形图标题及其格式
chart.setcharttitle("销售报告");
chart.getcharttitlearea().isbold(true);
chart.getcharttitlearea().setsize(12);
//设置类别轴标题及其格式
chart.getprimarycategoryaxis().settitle("国家");
chart.getprimarycategoryaxis().getfont().isbold(true);
chart.getprimarycategoryaxis().gettitlearea().isbold(true);
chart.getprimarycategoryaxis().gettitlearea().settextrotationangle(90);
//设置数据轴标题及其格式
chart.getprimaryvalueaxis().settitle("销售额(元)");
chart.getprimaryvalueaxis().hasmajorgridlines(false);
chart.getprimaryvalueaxis().setminvalue(1000);
chart.getprimaryvalueaxis().gettitlearea().isbold(true);
//设置数据点标签
chartseries series = chart.getseries();
for (int i = 0;i < series.size();i )
{
chartserie cs = series.get(i);
cs.getformat().getoptions().isvarycolor(true);
cs.getdatapoints().getdefaultdatapoint().getdatalabels().hasvalue(true);
}
//设置簇状条形图图例的位置
chart.getlegend().setposition(legendpositiontype.top);
//保存结果文件
workbook.savetofile("簇状条形图.xlsx", excelversion.version2016);
}
}
在 excel 工作表中创建堆积条形图
堆积条形图中,不同系列的数据在同一个条形图中分别堆积起来。与簇状条形图相比,堆积条形图增加对每个类别中数据的部分与整体的比较,使数据对比更加清晰可见。
以下是在 excel 工作表中创建堆积条形图的详细步骤:
- 创建一个 workbook 类的对象。
- 用 workbook.getworksheets().get() 方法通过索引获取指定的工作表。
- 在指定的单元格中添加数据并设置单元格样式。
- 用 worksheet.getcharts().add(excelcharttype.barstacked) 方法在指定的工作表中创建一个 2d 堆积条形图。
- 用 chart.setdatarange(cellrange datarange) 方法为堆积条形图设置数据范围。
- 设置堆积条形图的位置、标题、类别轴标题和数据轴标题。
- 循环遍历堆积条形图的各个数据类别,然后通过将chartserie.getdatapoints().getdefaultdatapoint().getdatalabels().hasvalue() 方法的值设置为 true 来展示每个数据类别的数据点标签。
- 用 chart.getlegend().setposition() 方法设置堆积条形图图例的位置。
- 用 workbook.savetofile() 方法保存结果文件。
- java
import com.spire.xls.*;
import com.spire.xls.charts.chartserie;
import com.spire.xls.charts.chartseries;
import java.awt.*;
public class createstackbarchart {
public static void main(string[] args) {
//创建一个workbook类的对象
workbook workbook = new workbook();
//获取第一个工作表
worksheet sheet = workbook.getworksheets().get(0);
//向指定单元格插入数据
sheet.getcellrange("a1").setvalue("国家");
sheet.getcellrange("a2").setvalue("古巴");
sheet.getcellrange("a3").setvalue("墨西哥");
sheet.getcellrange("a4").setvalue("法国");
sheet.getcellrange("a5").setvalue("德国");
sheet.getcellrange("b1").setvalue("六月");
sheet.getcellrange("b2").setnumbervalue(60000);
sheet.getcellrange("b3").setnumbervalue(80000);
sheet.getcellrange("b4").setnumbervalue(90000);
sheet.getcellrange("b5").setnumbervalue(85000);
sheet.getcellrange("c1").setvalue("八月");
sheet.getcellrange("c2").setnumbervalue(30000);
sheet.getcellrange("c3").setnumbervalue(20000);
sheet.getcellrange("c4").setnumbervalue(60000);
sheet.getcellrange("c5").setnumbervalue(35000);
//设置单元格样式
sheet.getcellrange("a1:c1").setrowheight(15);
sheet.getcellrange("a1:c1").getcellstyle().setcolor(color.darkgray);
sheet.getcellrange("a1:c1").getcellstyle().getexcelfont().setcolor(color.white);
sheet.getcellrange("a1:c5").getcellstyle().setverticalalignment(verticalaligntype.center);
sheet.getcellrange("a1:c5").getcellstyle().sethorizontalalignment(horizontalaligntype.center);
//设置数值格式
sheet.getcellrange("b2:c5").getcellstyle().setnumberformat("\"¥\"#,##0");
//在此工作表中创建一个堆积条形图
chart chart = sheet.getcharts().add(excelcharttype.barstacked);
//设置堆积条形图的数据范围
chart.setdatarange(sheet.getcellrange("a1:c5"));
chart.setseriesdatafromrange(false);
//设置堆积条形图的位置
chart.setleftcolumn(1);
chart.settoprow(6);
chart.setrightcolumn(11);
chart.setbottomrow(29);
//设置堆积条形图标题及其格式
chart.setcharttitle("销售报告");
chart.getcharttitlearea().isbold(true);
chart.getcharttitlearea().setsize(12);
//设置类别轴标题及其格式
chart.getprimarycategoryaxis().settitle("国家");
chart.getprimarycategoryaxis().getfont().isbold(true);
chart.getprimarycategoryaxis().gettitlearea().isbold(true);
chart.getprimarycategoryaxis().gettitlearea().settextrotationangle(90);
//设置数据轴标题及其格式
chart.getprimaryvalueaxis().settitle("销售额(元)");
chart.getprimaryvalueaxis().hasmajorgridlines(false);
chart.getprimaryvalueaxis().setminvalue(1000);
chart.getprimaryvalueaxis().gettitlearea().isbold(true);
//显示数据点标签
chartseries series = chart.getseries();
for (int i = 0;i < series.size();i )
{
chartserie cs = series.get(i);
cs.getformat().getoptions().isvarycolor(true);
cs.getdatapoints().getdefaultdatapoint().getdatalabels().hasvalue(true);
}
//设置堆积条形图图例的位置
chart.getlegend().setposition(legendpositiontype.top);
//保存结果文件
workbook.savetofile("堆积条形图.xlsx", excelversion.version2016);
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。