簡體   English   中英

使用Apache POI創建Excel圖表

[英]Create excel chart using Apache POI

我需要從我的Java代碼創建excel表,其中包含使用Apache POI庫的條形圖,折線圖等圖表。 可能嗎? 我無法找到相同的任何有用的代碼示例。

除了Java的POI庫之外,還有其他替代方法嗎?

您只能使用Excel模板來保留帶有POI的圖表。 這意味着您創建一個包含圖表的Excel模板文件,並將圖表的數據源鏈接到一個definedName,然后您可以從POI加載模板文件並使用代碼更改definedName。 當前POI不支持從頭創建Chart。

在poi-3.8中,對圖表的支持似乎即將到來。

這個討論

特別是這個例子

除了Java的POI庫之外,還有其他替代方法嗎?

還有一些其他的庫,但我不確定是否可以像圖表那樣編寫這樣的東西。

如果您可以使用較新的Office版本(使用基於XML的格式文件的版本),則可以使用不同的方法:

  • 使用較新版本的Office創建一個Excel文件,其中包含您需要的圖表和一些虛擬數據。
  • 解壓縮excel文件並從內部提取XML文件。 最感興趣的是文件xl \\ worksheets \\ sheet1.xml xl \\ worksheets \\ sheet2.xml或xl \\ worksheets \\ sheet3.xml(取決於使用的是哪些工作表)
  • 看看文件格式(它比使用POI更復雜),但是識別之前輸入的“虛擬”數據應該不難。
  • 使用Velocity或FreeMarker將該xml文件轉換為模板(通過用變量和宏替換您的虛擬數據會產生相同的結果)
  • 編寫一個小程序(只需幾行),它可以獲取實際數據,與模板合並,然后將所有內容打包回zip,但放置* .xlsx擴展名。

我知道上面的步驟看起來有點復雜,但如果你沒有太復雜的Excel文件,它應該比它看起來更容易。

線程看起來很舊,我不知道你是否已經找到了方法或者仍在尋找方法。

但這就是我要做的。 有一個名為JFreeChart的免費庫。 您可以使用它生成JPG或PNG文件,然后在使用Apache POI創建它時可以將其插入到excel文件中。

但這種方法的缺點是,當您更改電子表格中的數據時,圖表中的數據不會像Excel那樣動態變化。 現在這是我無法忍受的事情。

所以我現在要做一些研究。 我很確定,因為問題已經被問到必須在Apache POI中增加一個功能或者另一種優雅的做事方式。 如果我找到了,我一定會在這里發布我的發現。

----更新----

在我持續了大約一個小時的研究中,我只能找到一個名為SmartXLS的合適的庫(請google它,我無法發布鏈接,因為我是新手和垃圾郵件預防機制) ,這遠遠接近我會使用。 您可以通過程序生成excel和圖表。 該網站非常簡單,我找不到任何許可信息,所以我假設它是免費的個人和商業用途。 我能夠毫無問題地下載庫。 我還沒用過它。 試一試,讓我們知道它是如何運作的。

從頭開始這將非常復雜,因為您必須弄清楚Excel文件中需要創建的圖表來創建圖表。 我會走另一條路。

創建一個Excel文件,其中包含為某些數據創建條形圖等的宏(以常規方式使用Excel)。 然后使用Apache POI創建包含所需數據的文件,並從Java啟動Excel,執行創建圖表的宏。

這是工作示例

  • 我有JSON中的數據,以及帶有宏的.xlsm模板文件。 - excel中不需要圖表,數據或范圍名稱

  • 每次需要創建帶有圖表的工作表時,都要克隆模板工作表,將所需的圖表類型放在z1處,並更改插入到適當圖表類型的默認折線圖。 從z1中刪除圖表類型以避免多次執行。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM