首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IKVM.NET & Excel

IKVM.NET & Excel
EN

Stack Overflow用户
提问于 2019-01-29 11:19:02
回答 1查看 118关注 0票数 1

我使用IKVM.NETJava库(信号,岩层)转换为.NET库。下面是我执行的步骤:

  1. 我下载最新的Strata发行版
  2. 我将包含在存档的lib文件夹中的所有lib文件解压缩到C:\Strata\,包括以下辅助库:
    • commons-math3-3.6.1.jar
    • guava-26.0-jre.jar
    • joda-beans-2.4.0.jar
    • joda-convert-2.2.0.jar
    • slf4j-api-1.7.25.jar

  1. 我使用命令sn -k "C:\Strata\Strata.snk"为要创建的库生成一个密钥文件。
  2. 使用IKVM.NET的二进制字节码编译器,我使用以下命令将StrataJAR文件转换为.NET库:ikvmc -out:"C:\Strata\Strata.dll" -keyfile:"C:\Strata\Strata.snk" -assembly:Strata -version:2.2.0 -fileversion:2.2.0 -target:library -platform:anycpu -recurse:"C:\Strata\*.jar"

一旦完成了上面描述的过程,即使显示了一些有关缺少类的警告,我还是获得了一个有效的.NET包装器Strata。如果我创建了一个引用Visual Studio程序集的新Strata.dll项目,那么我就能够毫无问题地使用它的类和方法。

我真正想要实现的是使包装器在Excel VBA宏中工作,这样我就可以根据表的内容在子类中实例化和使用Strata类。

这是我迄今所尝试过的,但没有结果:

  1. 我将所有IKVM.NET库和Strata包装器注册到GAC中,如下所示:gacutil /i "C:\IKVM\IKVM.*.dll"gacutil /i "C:\Strata\Strata.dll"
  2. 我将Strata包装器注册为COM组件,并按照以下方式创建其类型库:regasm /codebase /tlb "C:\Strata\Strata.dll"

现在,当我打开Excel并在Development > Visual Basic > Tools > References...下运行时,我可以看到StrataTLB文件(位于"C:\Strata\Strata.tlb"),并且可以将它添加到当前的项目中。但是,一旦我键入窗口或打开Objects BrowserExcel就会崩溃,而不会提供任何有意义的信息。

我对这个问题一无所知。

我的注册过程正确吗?我是否也必须注册IKVM.NET库并创建它们的类型库?我应该将它们与Excel VBA包装器类型库一起包含到Strata项目中吗?这个问题是否是因为我使用的是x64版本的Excel,而包装器是在AnyCPU下编译的呢?我需要通过在每个公共类上添加一个ComVisible属性来编辑包装器吗?这个问题可能是因为包装器包含像“\_Build01_\p”这样的奇怪的方法名称吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 13:12:12

与其使用IKVM.NET,不如直接使用Java构建一个Excel外接程序。

若要在Java中构建Excel外接程序而不必使用.NET,请参见https://exceljava.com

甚至还有一个您可能感兴趣的Strata项目,它将Strata库封装在Excel外接程序中:https://github.com/exceljava/strata-excel中。

我认为您应该发现这比将Java库转换为.NET更方便。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54419884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档