Java 创建Excel图表

       在Excel文档中,图表是指将工作表中的数据用图形的方式表示出来。它不仅能够反映数据间的某种相对关系,以此来帮助我们分析和对比数据;同时能够使得数据更加易于阅读,引人注目。本文就将通过使用Java程序来演示如何在Excel文档中创建一些常用的图表,包括柱状图、饼状图和折线图。

使用工具:Free Spire.XLS for Java (免费版)

Jar文件获取及导入:

方法1:通过官网下载获取jar包。解压后将lib文件夹下的Spire.Xls.jar文件导入Java程序。(如下图)


Java 创建Excel图表_第1张图片

方法2:通过maven仓库安装导入。具体安装详解参见此网页。

【示例1】创建柱状图

import com.spire.xls.*;

import com.spire.xls.charts.ChartSerie;

import com.spire.xls.charts.ChartSeries;

import java.awt.*;

public class ColumnChart {    

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(65);         sheet.getCellRange("B3").setNumberValue(21);         sheet.getCellRange("B4").setNumberValue(12);         sheet.getCellRange("B5").setNumberValue(30);         sheet.getCellRange("C1").setValue("女性");         sheet.getCellRange("C2").setNumberValue(13);         sheet.getCellRange("C3").setNumberValue(33);         sheet.getCellRange("C4").setNumberValue(28);         sheet.getCellRange("C5").setNumberValue(21);        

//设置单元格样式        

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:C1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);         sheet.getCellRange("A1:C1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);        

sheet.autoFitColumn(1);        

//添加柱状图        

Chart chart = sheet.getCharts().add(ExcelChartType.ColumnClustered);        

//设置图表数据区域        

chart.setDataRange(sheet.getCellRange("A1:C5"));         chart.setSeriesDataFromRange(false);        

//设置图表位置        

chart.setLeftColumn(5);        

chart.setTopRow(1);        

chart.setRightColumn(14);        

chart.setBottomRow(21);        

//设置图表标题        

chart.setChartTitle("部门信息");        

chart.getChartTitleArea().isBold(true);        

chart.getChartTitleArea().setSize(12);        

//设置x,y轴的名称        

chart.getPrimaryCategoryAxis().setTitle("部门");         chart.getPrimaryCategoryAxis().getFont().isBold(true);         chart.getPrimaryCategoryAxis().getTitleArea().isBold(true);         chart.getPrimaryValueAxis().setTitle("人数");         chart.getPrimaryValueAxis().hasMajorGridLines(false);         chart.getPrimaryValueAxis().getTitleArea().isBold(true);         chart.getPrimaryValueAxis().getTitleArea().setTextRotationAngle(90);        

//设置系列颜色、重叠、宽度和数字标签        

ChartSeries series = chart.getSeries();        

for (int i = 0 ; i < series.size() ; i++) {            

ChartSerie cs = series.get(i);            

cs.getFormat().getOptions().isVaryColor(true);             cs.getFormat().getOptions().setOverlap(-50);             cs.getFormat().getOptions().setGapWidth(350);             cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);         }        

//设置图例位置        

chart.getLegend().setPosition(LegendPositionType.Top);        

//保存文档        

workbook.saveToFile("output/ColumnChart.xlsx",ExcelVersion.Version2016);    

}

}

柱状图创建效果:

Java 创建Excel图表_第2张图片

【示例2】创建饼状图

import com.spire.xls.*;

import com.spire.xls.charts.ChartSerie;

import java.awt.*;

public class PieChart {    

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(400000);         sheet.getCellRange("B3").setNumberValue(600000);         sheet.getCellRange("B4").setNumberValue(700000);         sheet.getCellRange("B5").setNumberValue(850000);        

//设置单元格样式        

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");        

//添加饼状图        

Chart chart = sheet.getCharts().add(ExcelChartType.Pie);        

//设置图表数据区域        

chart.setDataRange(sheet.getCellRange("B2:B5"));         chart.setSeriesDataFromRange(false);        

//设置图表位置        

chart.setLeftColumn(4);        

chart.setTopRow(1);        

chart.setRightColumn(13);        

chart.setBottomRow(21);        

//设置图表标题        

chart.setChartTitle("市场份额");        

chart.getChartTitleArea().isBold(true);        

chart.getChartTitleArea().setSize(12);        

//设置系列标签        

ChartSerie cs = chart.getSeries().get(0);         cs.setCategoryLabels(sheet.getCellRange("A2:A5"));         cs.setValues(sheet.getCellRange("B2:B5"));         cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);         cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasPercentage(true);         chart.getPlotArea().getFill().setVisible(false);        

//保存文档        

workbook.saveToFile("output/PieChart.xlsx", ExcelVersion.Version2016);    

}

}

饼状图创建效果:


Java 创建Excel图表_第3张图片

【示例3】创建折线图

import com.spire.xls.*;

import com.spire.xls.charts.ChartSerie;

import com.spire.xls.charts.ChartSeries;

import java.awt.*;

public class LineChart {    

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("A6").setValue("五月");        

sheet.getCellRange("A7").setValue("六月");        

sheet.getCellRange("B1").setValue("台式电脑");         sheet.getCellRange("B2").setNumberValue(80);         sheet.getCellRange("B3").setNumberValue(45);         sheet.getCellRange("B4").setNumberValue(25);         sheet.getCellRange("B5").setNumberValue(20);         sheet.getCellRange("B6").setNumberValue(10);         sheet.getCellRange("B7").setNumberValue(5);         sheet.getCellRange("C1").setValue("手提电脑");         sheet.getCellRange("C2").setNumberValue(30);         sheet.getCellRange("C3").setNumberValue(25);         sheet.getCellRange("C4").setNumberValue(35);         sheet.getCellRange("C5").setNumberValue(50);         sheet.getCellRange("C6").setNumberValue(45);         sheet.getCellRange("C7").setNumberValue(55);         sheet.getCellRange("D1").setValue("平板电脑");         sheet.getCellRange("D2").setNumberValue(10);         sheet.getCellRange("D3").setNumberValue(15);         sheet.getCellRange("D4").setNumberValue(20);         sheet.getCellRange("D5").setNumberValue(35);         sheet.getCellRange("D6").setNumberValue(60);         sheet.getCellRange("D7").setNumberValue(95);        

//设置单元格样式         

sheet.getCellRange("A1:D1").setRowHeight(15);         sheet.getCellRange("A1:D1").getCellStyle().setColor(Color.darkGray);         sheet.getCellRange("A1:D1").getCellStyle().getExcelFont().setColor(Color.white);         sheet.getCellRange("A1:D1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);         sheet.getCellRange("A1:D1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);        

//添加折线图        

Chart chart = sheet.getCharts().add(ExcelChartType.Line);        

//设置图表数据区域        

chart.setDataRange(sheet.getCellRange("A1:D7"));         chart.setSeriesDataFromRange(false);        

//设置图表位置        

chart.setLeftColumn(6);        

chart.setTopRow(1);        

chart.setRightColumn(15);        

chart.setBottomRow(21);        

//设置图表标题        

chart.setChartTitle("产品销售趋势图");        

chart.getChartTitleArea().isBold(true);        

chart.getChartTitleArea().setSize(12);        

//设置x,y轴的名称        

chart.getPrimaryCategoryAxis().setTitle("月份");         chart.getPrimaryCategoryAxis().getFont().isBold(true);         chart.getPrimaryCategoryAxis().getTitleArea().isBold(true);         chart.getPrimaryValueAxis().setTitle("销售量");         chart.getPrimaryValueAxis().hasMajorGridLines(false);         chart.getPrimaryValueAxis().getTitleArea().setTextRotationAngle(90);         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);             cs.getDataFormat().setMarkerStyle(ChartMarkerType.Circle);         }        

//设置图例位置        

chart.getLegend().setPosition(LegendPositionType.Top);        

//保存文档         workbook.saveToFile("LineChart.xlsx", ExcelVersion.Version2016);    

}

}

折线图创建效果:


Java 创建Excel图表_第4张图片

(本文完)

你可能感兴趣的:(Java 创建Excel图表)