饼图是Excel中常见的一种圆饼形图表工具,它能够直接以图形的方式展现各个组成部分在整体中所占的比例,从而帮助我们更加快速直观的去分析和理解抽象的数据。而环形图则是饼图的一种变形,在视觉上,环形图去掉了中心的部分,但其主要功能依旧是诠释数据间的占比关系。本文将介绍如何借助Free Spire.XLS for Java使用代码在Excel文档中创建饼图和环形图。


基本步骤:

1. 下载 Free Spire.XLS for Java包并解压缩。

2. 将lib文件夹下的Spire.Xls.jar包作为依赖项导入到Java应用程序中。(也可直接通过Maven仓库安装JAR包(配置pom.xml文件的代码见下文))

3. 在Java应用程序中新建一个Java Class(此处我命名为CreatePieChart和CreateDoughnutChart), 然后输入相应的Java代码并运行。


配置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>2.2.0</version></dependency></dependencies>


饼图:

importcom.spire.xls.*;importcom.spire.xls.charts.ChartSerie;importjava.awt.*;publicclassCreatePieChart{publicstaticvoidmain(String[]args){//创建Workbook对象Workbookworkbook=newWorkbook();//获取第一个工作表Worksheetsheet=workbook.getWorksheets().get(0);//将图表数据写入工作表sheet.getCellRange("A1").setValue("年份");sheet.getCellRange("A2").setValue("2002");sheet.getCellRange("A3").setValue("2003");sheet.getCellRange("A4").setValue("2004");sheet.getCellRange("A5").setValue("2005");sheet.getCellRange("B1").setValue("销售额");sheet.getCellRange("B2").setNumberValue(4000);sheet.getCellRange("B3").setNumberValue(6000);sheet.getCellRange("B4").setNumberValue(7000);sheet.getCellRange("B5").setNumberValue(8500);//设置单元格样式sheet.getCellRange("A1:B1").setRowHeight(15);sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("\"¥\"#,##0");//添加饼图Chartchart=sheet.getCharts().add(ExcelChartType.Pie);//设置图表数据区域chart.setDataRange(sheet.getCellRange("B2:B5"));chart.setSeriesDataFromRange(false);//设置图表位置chart.setLeftColumn(3);chart.setTopRow(1);chart.setRightColumn(11);chart.setBottomRow(20);//设置图表标题chart.setChartTitle("年销售额");chart.getChartTitleArea().isBold(true);chart.getChartTitleArea().setSize(12);//设置系列标签ChartSeriecs=chart.getSeries().get(0);cs.setCategoryLabels(sheet.getCellRange("A2:A5"));cs.setValues(sheet.getCellRange("B2:B5"));cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);chart.getPlotArea().getFill().setVisible(false);//保存文档workbook.saveToFile("饼图.xlsx",ExcelVersion.Version2016);}}

环形图:

importcom.spire.xls.*;importcom.spire.xls.charts.ChartSerie;importcom.spire.xls.charts.ChartSeries;importjava.awt.*;publicclassCreateDoughnutChart{publicstaticvoidmain(String[]args){//创建Workbook对象Workbookworkbook=newWorkbook();//获取第一个工作表Worksheetsheet=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(6000);sheet.getCellRange("B3").setNumberValue(8000);sheet.getCellRange("B4").setNumberValue(9000);sheet.getCellRange("B5").setNumberValue(8500);//设置单元格样式sheet.getCellRange("A1:B1").setRowHeight(15);sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("\"¥\"#,##0");//添加饼图Chartchart=sheet.getCharts().add(ExcelChartType.Doughnut);//设置图表数据区域chart.setDataRange(sheet.getCellRange("A1:B5"));chart.setSeriesDataFromRange(false);//设置图表位置chart.setLeftColumn(3);chart.setTopRow(1);chart.setRightColumn(11);chart.setBottomRow(20);//设置图表标题chart.setChartTitle("市场占比");chart.getChartTitleArea().isBold(true);chart.getChartTitleArea().setSize(12);//设置系列的颜色ChartSeriesseries=chart.getSeries();for(inti=0;i<series.size();i++){ChartSeriecs=series.get(i);cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasPercentage(true);}//设置图例的位置chart.getLegend().setPosition(LegendPositionType.Top);//保存文档workbook.saveToFile("环形图.xlsx",ExcelVersion.Version2016);}}