用MS Office的Excel組件去產生Excel有很大的弊端.
首先是進程難以釋放,其次是每次產生的時候都會把Excel.exe全部的Load到記憶體裡面去,至少佔用10M的記憶體,假如產生大檔案的至少佔用100-500M,不是每台伺服器都可能承受的了這樣的記憶體損耗,而且每一個request都會產生一個這樣的記憶體損耗.所以,沒有足夠的硬體條件,用這種方式是很不可取的.
所以,在系統開發過程中,想到了POI這個java的開源組件.但是有一個問題:這個產生的是OpenOffice的Excel格式,和MS Office的Excel格式還是有點出去,假如是自己系統去讀取的話還是理解,但是碰到一些對外整合的系統,他會嚴格的要求Excel的格式必須要和MS Office的Excel格式一樣,不能有差異.所以用POI去產生就有點麻煩.
於是google....
找到了JExcelAPI,JExcel也是一套在java產生Excel的開源API,而且能產生無差異的Excel檔案,這個就是我的選擇,而且相對的,用它開發比POI簡單多.
經過2個小時的搗騰測試..終於把一個Console Application做出來了.嘿嘿效果不錯,而且3rd Part 系統也可以讀取.於是乎,怎麼讓jar檔案在.net中使用這個是個問題.
開始是用調用Process的方式.發現並不是怎麼好用.而且是很難用...
繼續發揚程式員的優良傳統.google去....
終於碰到了一個好的方法.使用.net的java虛擬機器吧jar引入到.net裡面去.不錯不錯.不過一個JDK的VM for .net一共有25M....
好大....
不過實現的效果還是挺滿意的.接下來的事情就是把這些dll,exe都放到項目裡面去.ok,搞定.
下面就把java的代碼貼出來:
package Export:
Code
ExportApplication:
Code
我產生的Tool和要引用的DLL:
http://files.cnblogs.com/cnherman/ExportToExcelTool.rar
使用的VM是IKVM
http://www.IKVM.net