利用java的开源组件JExcel创建无差异的Excel文件,并且导入到.net项目中去.

用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

 

 

H.Wong -2010
posted @ 2008-09-19 09:34 H.Wong 阅读(2097) 评论(11) 编辑 收藏

 回复 引用 查看   
#1楼 2008-09-19 10:24 kiler      
貌似有一个NExcelAPI的说,不过很久没更新了。
 回复 引用   
#2楼 2008-09-19 10:57 laoda[未注册用户]
能不能打开现有的excel 文件或者 模板 对其进行数据修改,还是只能从头创建所有的excel格式
 回复 引用 查看   
#3楼 2008-09-19 10:58 Wuya      
用GOOGLE搜索了一把,的确有个叫NExcelAPI的东西,地址是:
http://www.giannistsakiris.com/index.php/2007/06/22/nexcelapi-a-net-port-of-jexcelapi/

这个老外使用J#修改并将JExcelAPI编译成了.net类库。

由此看来J#在有些地方还是大有用处的。

 回复 引用 查看   
#4楼 2008-09-19 12:29 紫色永恒      
j#。。。MS的这个玩意有点失败 并未有多少java社区的人因为它而转向.net开发
 回复 引用   
#5楼 2008-09-19 15:05 csui2008[未注册用户]
http://files.cnblogs.com/cnherman/ExportToExcelTool.rar

这是什么呀?就用不了
好像没有什么用
希望楼主写清一点

 回复 引用 查看   
#6楼 2008-09-19 20:42 代码乱了      
期待某位大大改一个C#版的
 回复 引用 查看   
#7楼[楼主] 2008-09-22 17:30 Herman.Wong      
@kiler
我也找到过,貌似不是我想要的.

 回复 引用 查看   
#8楼[楼主] 2008-09-22 17:30 Herman.Wong      
@laoda
可以.而且很方便

 回复 引用 查看   
#9楼[楼主] 2008-09-22 17:31 Herman.Wong      
@Wuya
我打死也不用j#

 回复 引用 查看   
#10楼[楼主] 2008-09-22 17:31 Herman.Wong      
@紫色永恒
要么就用纯正的.要不就不要...

 回复 引用 查看   
#11楼[楼主] 2008-09-22 17:32 Herman.Wong      
@csui2008
还要一个asp.net的java虚拟机.
叫IKVM.只有引用了才行..