圖表,是指將既得數據用圖形的方式表示出來。在前文中咱們介紹過如何使用Java程序來爲Excel文檔建立圖表的方法。本文將經過使用Java程序來演示如何建立PowerPoint圖表及爲圖表添加趨勢線。趨勢線的運用可以顯示數據的變化趨勢,同時可以幫助預測數據的將來值。html
方法1:經過官網下載獲取jar包。解壓後將lib文件夾下的Spire.Presentation.jar文件導入Java程序。(以下圖)java
方法2:經過maven倉庫安裝導入。具體安裝教程參見此網頁。c++
import com.spire.presentation.*; import com.spire.pdf.tables.table.*; import com.spire.presentation.charts.*; import com.spire.presentation.drawing.FillFormatType; import java.awt.geom.Rectangle2D; import java.lang.Object; public class AddChart { public static void main(String[] args) throws Exception { //實例化一個Presentation對象 Presentation presentation = new Presentation(); //插入柱形圖 Rectangle2D.Double rect = new Rectangle2D.Double(40, 100, 550, 320); IChart chart = null; chart = presentation.getSlides().get(0).getShapes().appendChart(ChartType.COLUMN_CLUSTERED, rect); //添加表名 chart.getChartTitle().getTextProperties().setText("銷售報表"); chart.getChartTitle().getTextProperties().isCentered(true); chart.getChartTitle().setHeight(30); chart.hasTitle(true); //建立後臺數據表 DataTable dataTable = new DataTable(); dataTable.getColumns().add(new DataColumn("銷售額", DataTypes.DATATABLE_STRING)); dataTable.getColumns().add(new DataColumn("穀物", DataTypes.DATATABLE_INT)); dataTable.getColumns().add(new DataColumn("糧油", DataTypes.DATATABLE_INT)); dataTable.getColumns().add(new DataColumn("百貨", DataTypes.DATATABLE_INT)); DataRow row1 = dataTable.newRow(); row1.setString("銷售額", "門店1"); row1.setInt("穀物", 250); row1.setInt("糧油", 150); row1.setInt("百貨", 99); DataRow row2 = dataTable.newRow(); row2.setString("銷售額", "門店2"); row2.setInt("穀物", 270); row2.setInt("糧油", 150); row2.setInt("百貨", 99); DataRow row3 = dataTable.newRow(); row3.setString("銷售額", "門店3"); row3.setInt("穀物", 310); row3.setInt("糧油", 120); row3.setInt("百貨", 49); DataRow row4 = dataTable.newRow(); row4.setString("銷售額", "門店4"); row4.setInt("穀物", 330); row4.setInt("糧油", 120); row4.setInt("百貨", 49); DataRow row5 = dataTable.newRow(); row5.setString("銷售額", "門店5"); row5.setInt("穀物", 360); row5.setInt("糧油", 150); row5.setInt("百貨", 141); DataRow row6 = dataTable.newRow(); row6.setString("銷售額", "門店6"); row6.setInt("穀物", 380); row6.setInt("糧油", 150); row6.setInt("百貨", 135); dataTable.getRows().add(row1); dataTable.getRows().add(row2); dataTable.getRows().add(row3); dataTable.getRows().add(row4); dataTable.getRows().add(row5); dataTable.getRows().add(row6); //將數據寫入圖表 for (int c = 0; c < dataTable.getColumns().size(); c++) { chart.getChartData().get(0, c).setText(dataTable.getColumns().get(c).getColumnName()); } for (int r = 0; r < dataTable.getRows().size(); r++) { Object[] datas = dataTable.getRows().get(r).getArrayList(); for (int c = 0; c < datas.length; c++) { chart.getChartData().get(r + 1, c).setValue(datas[c]); } } //設置系列標籤 chart.getSeries().setSeriesLabel(chart.getChartData().get("B1", "D1")); //設置類別標籤 chart.getCategories().setCategoryLabels(chart.getChartData().get("A2", "A7")); //爲各個系列賦值 chart.getSeries().get(0).setValues(chart.getChartData().get("B2", "B7")); chart.getSeries().get(1).setValues(chart.getChartData().get("C2", "C7")); chart.getSeries().get(2).setValues(chart.getChartData().get("D2", "D7")); chart.getSeries().get(2).getFill().setFillType(FillFormatType.SOLID); chart.getSeries().get(2).getFill().getSolidColor().setKnownColor(KnownColors.LIGHT_BLUE); //設置系列重疊 chart.setOverLap(-50); //設置類別間距 chart.setGapDepth(200); //保存文檔 presentation.saveToFile("output/CreateChart.pptx", FileFormat.PPTX_2010); } }
建立效果:segmentfault
import com.spire.presentation.FileFormat; import com.spire.presentation.ISlide; import com.spire.presentation.Presentation; import com.spire.presentation.charts.IChart; import com.spire.presentation.charts.ITrendlines; import com.spire.presentation.charts.TrendlineSimpleType; public class AddTrendline { public static void main(String[] args) throws Exception { //建立Presentation實例 Presentation ppt = new Presentation(); //加載PowerPoint文檔 ppt.loadFromFile("C:\\Users\\Test1\\Desktop\\CreateChart.pptx"); //獲取第一張幻燈片 ISlide slide = ppt.getSlides().get(0); //獲取幻燈片上的圖表 IChart chart = (IChart)slide.getShapes().get(0); //給圖表的第一個數據系列添加線性趨勢線 ITrendlines trendLine = chart.getSeries().get(0).addTrendLine(TrendlineSimpleType.LINEAR); //不顯示公式 //trendLine.setdisplayEquation(false); //不顯示R平方值 //trendLine.setdisplayRSquaredValue(false); //保存結果文檔 ppt.saveToFile("output/AddTrendline.pptx", FileFormat.PPTX_2013); } }
添加效果:app
(本文完)maven