JAVA實現在面板中添加圖表_Java 創建PowerPoint圖表并為其添加趨勢線

圖表,是指將既得數據用圖形的方式表示出來。在前文中我們介紹過如何使用Java程序來為Excel文檔創建圖表的方法。本文將通過使用Java程序來演示如何創建PowerPoint圖表及為圖表添加趨勢線。趨勢線的運用能夠顯示數據的變化趨勢,同時能夠幫助預測數據的未來值。

Jar文件獲取及導入:

方法1:通過官網下載獲取jar包。解壓后將lib文件夾下的Spire.Presentation.jar文件導入Java程序。(如下圖)

66fbd18770b7c835e6f8def0ba41cfc0.png

方法2:通過maven倉庫安裝導入。具體安裝教程參見此網頁。

【示例1】創建圖表

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

}

}

創建效果:

0506ff130c5409caad4a85a2db236ef2.png

【示例2】為圖表添加趨勢線

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

}

}

添加效果:

eec34db5c9c24879fe3cb918753ae9cf.png

(本文完)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395092.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

code warri_我參加了有史以來的第一屆Warri Tech宣傳活動。 這是我學到的。

code warriIn the city of Warri, Delta state of Nigeria, there is a saying that goes “Warri nor dey carry last, if e hard well well na draw”. This translates to “Warri is never behind in the scheme of things (events)”.在尼日利亞三角洲州的沃里市&#xff…

Socket編程小結

目錄&#xff1a; 什么是 socket&#xff1f;... 1 Internet 套接字的兩種類型... 1 網絡理論... 2 結構體... 2 本機轉換... 3 IP 地址和如何處理它們... 4 socket()函數... 4 bind()函數... 4 connect()程序... 5 listen()函數... 6 accept()函數... 6 send() and recv() 7 …

idea設置中文界面_《英雄聯盟手游》設置界面中文翻譯圖分享 外服漢化界面一覽...

導讀 英雄聯盟手游目前以及正式上線了&#xff0c;不過現在的話是沒有中文版的&#xff0c;只有外服&#xff0c;所有很多地方是看不懂的&#xff0c;也不明白的&#xff0c;這樣的話就需要翻譯了&#xff0c;具體要怎么設置會比較&#xff0c;相關的步驟是什么呢&#xff1f;下…

windows 2008 r2 系統默認80端口被系統占用的處理

--windows 2008 r2 系統默認80端口被系統占用的處理 --使用netstat 命令查看指定端口netstat -ano | findstr :80----如下所示&#xff1a;本地的80端口被進程為4的占用 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP 192.168.1.207:60652 …

java實現封裝的三部_Java 封裝

Java 封裝在面向對象程式設計方法中&#xff0c;封裝(英語&#xff1a;Encapsulation)是指&#xff0c;一種將抽象性函式接口的實作細節部份包裝、隱藏起來的方法。封裝可以被認為是一個保護屏障&#xff0c;防止該類的代碼和數據被外部類定義的代碼隨機訪問。要訪問該類的代碼…

小豬短租超棒新房_freeCodeCamp講座簡介:您可以免費觀看的超棒技術講座

小豬短租超棒新房by Quincy Larson昆西拉爾森(Quincy Larson) freeCodeCamp講座簡介&#xff1a;您可以免費觀看的超棒技術講座 (Introducing freeCodeCamp Talks: awesome tech talks you can watch for free) Developers give thousands of tech talks every year at confer…

安卓10不支持qmc解碼_官宣:安卓10已發布!21款手機已適配,小米華為率先支持...

隨著今天凌晨谷歌 I/O 大會的召開&#xff0c;Android Q 也就是安卓10正式官宣&#xff0c;新版的安卓10加入了諸多新手勢&#xff0c;從 Home 鍵設計上看&#xff0c;安卓10 的新版手勢很大程度上有疑似借鑒 iOS 的手勢&#xff0c;底部一個長條&#xff0c;作為 Home 用來返回…

linux系統編程之進程(七):system()函數使用【轉】

本文轉載自&#xff1a;http://www.cnblogs.com/mickole/p/3187974.html 一&#xff0c;system()理解 功能&#xff1a;system()函數調用“/bin/sh -c command”執行特定的命令&#xff0c;阻塞當前進程直到command命令執行完畢 原型&#xff1a; int system(const char *comma…

安裝了最新版本的java 用友nc打不開_NC無法安裝客戶端插件,不能進入用友NC系統登陸界面...

NC無法安裝客戶端插件&#xff0c;不能進入用友NC系統登陸界面問題現象現象1&#xff1a;可以打開web界面&#xff0c;但無法進入登陸界面&#xff0c;一直停留在右圖所示界面。現象2&#xff1a;系統提示安全警告問題原因在使用IE首次登錄NC系統時&#xff0c;系統會自動下載N…

漢王云名片識別(SM)組件開發詳解

大家好&#xff0c;最近在DeviceOne平臺上做了一個漢王云名片識別的功能組件。下面把我開發過程給大家做一個分享&#xff0c;希望可以幫助到大家。 下面我把我的思路給大家講解一下。1.找到我要集成的sdk&#xff0c;也就是漢王云名片的sdk下載&#xff08;android和ios&#…

[App Store Connect幫助]八、維護您的 App(4.2)查看評分與評論

您可以查看 App 的總評分或單個顧客評論。如有必要&#xff0c;您可以針對某條評論報告問題。 【注】顧客可以為您的 iOS 和 macOS App 評分并撰寫評論&#xff0c;但只能為 Apple TVOS App 評分。 必要職能&#xff1a;“帳戶持有人”職能、“管理”職能、“App 管理”職能、“…

visio studio json工具_《產品經理入門指南》彩蛋2:別技淫原型圖!你的Visio和Balsamiq Mockup入門了嗎?...

溫馨提示&#xff1a;如果你有關于產品經理方面的任何問題&#xff0c;歡迎關注我的微信公眾號與我互動。最新的免費系統的產品經理課程《老司機帶你做產品》已經推出&#xff0c;請關注微信公眾號&#xff1a;iamliuwenzhi很多產品新人剛開始工作時&#xff0c;喜歡一拿到需求…

漸進式web應用程序_通過漸進式Web應用程序吸引用戶并增強他們的體驗

漸進式web應用程序by Dave Gray戴夫格雷(Dave Gray) 通過漸進式Web應用程序吸引用戶并增強他們的體驗 (Engage your users and enhance their experience with Progressive Web Apps) 什么是漸進式Web應用程序&#xff1f; (What is a Progressive Web App?) A Progressive W…

mysql牽引例子_MySQL學習06(事務和索引)

事務概述什么是事務事務就是將一組SQL語句放在同一批次內去執行如果一個SQL語句出錯,則該批次內的所有SQL都將被取消執行MySQL事務處理只支持InnoDB和BDB數據表類型事務的ACID原則原子性(Atomic)整個事務中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#…

android操作系統 真的嗎_旋挖機培訓學校真的能學會嗎,旋挖鉆機到底有哪些操作系統...

旋挖機培訓學校真的能學會嗎添加微&#xff1a;yywyyc 旋挖鉆機到底有哪些操作系統【前言】很多使用旋挖鉆機或者想要了解旋挖鉆機的工程公司可能不是特別了解旋挖鉆機本身的系統以及部件&#xff0c;本篇文章針對旋挖鉆機的操作系統來給大家介紹一下&#xff0c;讓大家了…

WebAPI 2參數綁定方法

簡單類型參數 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public class ValuesController : ApiController {// http://localhost:49407/api/values/example1?id2[Route("example1")][HttpGet]public string Get(int…

推薦幾個自己經常去的一些博客和網站

唐巧的技術博客objc中國Ray WenderlichCocoaDocs.orgNSHipsterLukes HomepageCocoabit | 做自己喜歡的事情轉載于:https://www.cnblogs.com/faceup/p/10423259.html

創建hugo博客_Hugo + Firebase:如何在幾分鐘內免費創建自己的靜態網站

創建hugo博客by Aravind Putrevu通過Aravind Putrevu Hugo Firebase&#xff1a;如何在幾分鐘內免費創建自己的靜態網站 (Hugo Firebase: How to create your own static website for free in minutes) Ever thought of having your own website for putting up your projec…

探測與響應是各企業機構在2017年的首要安全事務

作者系&#xff1a;Gartner首席研究分析師 Sid Deshpande &Gartner研究總監 Lawrence Pingree 2017年&#xff0c;各個企業正在改變其安全支出戰略&#xff0c;從僅注重防御轉而更加關心探測和響應程度。2017年的全球信息安全支出預計將達到900億美元&#xff0c;相較2016年…

java怎么引入html文件路徑_如何在public_html中讀取文件但在域外?使用相對路徑...

我正在嘗試從我的(附加組件)域目錄之外的目錄中讀取文件 . 這是我的目錄結構&#xff1a;public_html /domain /file_read.phpfile_write.phpsensitive /file.dat雖然我能夠使用“../sensitive/file.dat”寫入敏感&#xff0c;但我無法使用相同的方法進行讀取 . 有什么想法嗎&a…