我需要從我的Java代碼創建Excel表格,其中包含使用Apache POI庫的條形圖,折線圖等圖表。 這可能嗎? 我無法找到任何有用的代碼示例。使用Apache POI創建Excel圖表
除了Java的POI庫之外,還有其他的選擇嗎?
我需要從我的Java代碼創建Excel表格,其中包含使用Apache POI庫的條形圖,折線圖等圖表。 這可能嗎? 我無法找到任何有用的代碼示例。使用Apache POI創建Excel圖表
除了Java的POI庫之外,還有其他的選擇嗎?
您只能使用Excel模板來保存包含POI的圖表。 這意味着你創建一個帶有圖表的Excel模板文件,並將圖表的數據源鏈接到一個definedName,然後你可以從POI加載模板文件並使用代碼來更改definedName。 當前POI不支持從頭創建圖表。
Hi Liya, 非常感謝您的回覆。 我已經按照您的建議嘗試過了。 模板excel文件(空白圖表的源數據爲動態數據源)需要動態命名範圍(使用偏移功能)。 我已經使用了以下鏈接中的程序: 'http://www.youtube.com/watch?v=7le-m8YRP6M' – javdev 2010-07-30 03:49:11
但我面臨以下問題: 保存成功後,一個命名範圍說'testrange ',每當我點擊表格中的任何其他單元格,然後再次檢查「測試範圍」的公式時,它會變得無法理解。例如對於例如 如果我將它保存爲「= OFFSET(A1 ,,, COUNTA(A:A),2)」,然後單擊其他單元格。現在如果再次檢查'testrange'的公式,它會顯示如下所示: 「= OFFSET(Sheet1!XFB11 ,,, COUNTA(Sheet1!XFB:XFB),2)」,每次檢查時都會更改。 我在Excel 2003和2007中也面臨這個問題。 請建議如果我在設置動態命名範圍時做錯了什麼。 – javdev 2010-07-30 03:50:08
你的公式使用相對地址,請嘗試絕對地址 OFFSET($ A $ 1 ,,, Count($ A $ A),2) – liya 2010-07-30 10:07:19
從頭開始這將會非常複雜,因爲您必須弄清楚Excel文件中需要進行什麼操作來創建圖表。我會走一條不同的路線。
創建一個Excel文件,其中包含一個爲某些數據(使用常規方式使用Excel)創建條形圖等的宏。然後使用Apache POI創建一個包含所需數據的文件,並從Java啓動Excel,然後執行創建圖表的宏。
嗨DJ, 感謝您的快速回復。 其實我和你的建議完全一樣。 但是在這種情況下,如果數據量很大,宏執行的速度非常慢,這是我關心的問題。宏使用中也存在安全問題。 所以,我想創建使用POI庫的圖表。可能嗎? 感謝和問候, Abhinav – javdev 2010-07-29 05:10:08
我確定這是,但您可能需要找出包含圖表的文件的確切內容。我仍然會用Excel創建一個例子,然後使用POI重現它。 xlsx文件的完整規範可用,但非常複雜。 – DJClayworth 2010-08-03 18:09:37
除了Java的POI庫之外,還有其他的選擇嗎?
還有一些其他的圖書館,但我不確定是否可以寫圖表這樣的東西。
如果可以使用較新的Office版本(使用基於格式文件的XML的那些),比你可以使用不同的方法:
我知道上述步驟看起來有點複雜,但如果你沒有太複雜的Excel文件,它應該比看起來更容易。
嗨阿德里安, 非常感謝您的快速回復和有價值的信息。 這種方法看起來很合理,但很少有人擔心: 1.我想支持Excel 2003和2007. 2.用於生成圖表的xml很難理解。 這些問題是否有其他選擇。 你也提到過「還有其他一些圖書館,但我不確定是否可以像圖表一樣寫這樣的東西。」 - >你可以提出一些(這是免費的),可以提供這種功能。 再次感謝, Abhinav – javdev 2010-07-29 05:23:21
其他一些優秀的庫:http://jexcelapi.sourceforge.net/,http://sourceforge.net/projects/openxls/,https://xlsql.dev.java.net/ ,而不是有許多Java到COM的橋樑允許直接從Java使用Excel安裝,例如http://danadler.com/jacob/(但也有很多其他的)。 另一個選擇是使用OpenOffice(因爲它很容易從Java編碼到API),並讓OpenOffice將結果導出爲相應的Excel格式。 – 2010-07-29 12:44:44
線程看起來很老,我不知道你是否已經想出了一種方法或仍在尋找一種方法。
但這是我會做的。有一個名爲JFreeChart的免費圖書館。您可以使用它來生成JPG或PNG文件,然後在使用Apache POI創建時可以將其插入到Excel文件中。
但是,這種方法的缺點是,如Excel中那樣更改電子表格中的數據時,圖形中的數據不會動態變化。現在,這是我無法忍受的事情。
所以我現在要做一些研究。我非常肯定,既然問題已經被問到,那麼必須在Apache POI中增加一項功能,或者另一種優雅的處理方式。如果我發現任何情況,我一定會在此發佈我的發現。
---- ---- UPDATE
在我的研究持續了大約一個小時,我只能找到一個合適的庫調用SmartXLS(請谷歌,我不能張貼鏈接,因爲我」新手和垃圾郵件防範機制踢了)這是遠遠接近我會使用。您可以通過程序生成Excel和圖表。該網站非常簡單,我找不到任何許可信息,所以我假設它是免費的個人和商業用途。我能夠毫無問題地下載該庫。我還沒有用過它。給它一個鏡頭,讓我們知道它是如何工作的。
嗨Karthik,謝謝你的回覆。您發現POI具有侷限性。而且我也不能選擇SmartXLS,因爲它不是免費的。 JFreeChart是非常好的API,但我想要動態的Excel圖表。所以,我使用了liya和dj在下面討論的方法。 – javdev 2010-10-08 05:51:17
基本上我使用poi將數據轉儲到excel文件中,並在Excel第一次打開時使用Excel宏創建來自該數據的圖表。 – javdev 2010-10-08 05:52:31
您是否可以發佈您在Excel中使用的宏的片段來創建圖表?我很確定我可以谷歌它。看到你有一個可行的解決方案,我寧願問你並且節省一些時間,而不是重新發明那個輪子。感謝回覆。 – 2010-10-08 20:37:26
(這個問題似乎有點被看待,所以我認爲在3年前的答案中添加評論是不會傷害的)。不幸的是,到目前爲止,他們沒有添加任何東西,只有散點圖和折線圖。幸運的是,創建新的圖表類型似乎並不那麼困難,建立在ooxml-schemas上(檢查apache poi中的ScatterChart的源代碼以瞭解如何),可以嘗試添加新的圖表類型。感謝@prule的鏈接,幫助我找到了這種可能! – 2015-04-08 14:30:46
我有數據在JSON和.xlsm模板文件與宏。 - excel中不需要圖表,數據或範圍名稱
每次需要使用圖表創建工作表時,將模板表克隆,在z1處放置所需的圖表類型並更改插入到適當圖表類型的默認折線圖。從z1中刪除圖表類型以避免多次執行。
希望它有幫助。
這裏是一個教程,解釋[如何使用POI/JFreeChart在Excel中創建圖表](http://thinktibits.blogspot.com.au/2012/12/Java-POI-Excel-Create-Chart-Example- JFreeChart-Part-4.html)。 – user1933158 2012-12-27 21:35:57