在Excel文檔中,圖表是指將工做表中的數據用圖形的方式表示出來。它不只可以反映數據間的某種相對關係,以此來幫助咱們分析和對比數據;同時可以使得數據更加易於閱讀,引人注目。本文就將經過使用Java程序來演示如何在Excel文檔中建立一些經常使用的圖表,包括柱狀圖、餅狀圖和折線圖。html
方法1:經過官網下載獲取jar包。解壓後將lib文件夾下的Spire.Xls.jar文件導入Java程序。(以下圖)java
方法2:經過maven倉庫安裝導入。具體安裝詳情參見此網頁。maven
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); } }
柱狀圖建立效果:工具
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); } }
餅狀圖建立效果:測試
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("output/LineChart.xlsx", ExcelVersion.Version2016); } }
折線圖建立效果:spa
(本文完)3d