如何使用IKVM转换Apache POI

3

我想在我的.NET应用程序中使用Apache POI,我知道有一个名为NPOI的端口,但它不完整,并且没有PowerPoint相关功能。

我尝试使用以下命令将其转换为IKVM:

ikvmc -target:library poi-3.8.jar poi-ooxml-3.8.jar poi-ooxml-schemas-3.8.jar poi-excelant-3.8.jar poi-scratchpad-3.8.jar

然而,在使用结果dll中的类之后执行应用程序时,出现了以下错误:

The type initializer for 'org.apache.poi.xslf.usermodel.XMLSlideShow' threw an exception.

请问有人能将我指向下载IKVMed Apache POI的链接吗?我已经在谷歌上搜索了,但目前还没有什么收获。


微软没有提供一个用于处理 Microsoft Office 文档的 .NET API 吗? - Puce
是的,有一种方法,但提供的合并PowerPoint演示文稿的代码会引发错误,而Apache POI有一个专门用于此的类,我想尝试一下。 - Ali
你联系了微软支持吗?他们对这个错误有什么说法? - Puce
你不需要同时包含依赖项吗?如果我没记错的话,你需要将它们与主要的POI JAR文件一起传递。 - Gagravarr
我已经添加了src中存在的每个jar,以免错过任何一个,但仍然出现“Type Initializer”错误。 - Ali
你收到了哪些带有堆栈跟踪的异常?你有一些编译器错误吗?还可以查看http://stackoverflow.com/questions/13658972/convert-apache-poi-jar-to-dll-using-ikvm-net。 - Horcrux7
1个回答

4

我刚完成了一个项目,成功地使用IKVM将POI 3.9转换。

先决条件:

  • 下载POI 3.9并将所有JAR文件复制到一个目录中
  • 下载IKVM(我使用的版本是0.46.0.1)

以下命令(在Windows 7命令行中,在所有POI JAR文件所在的同一目录中运行)对我很有用:

ikvmc -target:library xmlbeans-2.3.0.jar
ikvmc -target:library stax-api-1.0.1.jar

ikvmc poi-ooxml-schemas-3.9-20121203.jar -target:library -reference:xmlbeans-2.3.0.dll -reference:stax-api-1.0.1.dll 


ikvmc -target:library log4j-1.2.13.jar
ikvmc -target:library commons-logging-1.1.jar
ikvmc -target:library commons-codec-1.5.jar

ikvmc poi-3.9-20121203.jar -target:library -reference:log4j-1.2.13.dll -reference:commons-logging-1.1.dll -reference:commons-codec-1.5.dll

ikvmc -target:library dom4j-1.6.1.jar

ikvmc poi-ooxml-3.9-20121203.jar -target:library -reference:poi-3.9-20121203.dll -reference:poi-ooxml-schemas-3.9-20121203.dll -reference:dom4j-1.6.1.dll -reference:xmlbeans-2.3.0.dll

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接