gpt4 book ai didi

f# - 无法从 F# 中查看 Excel Interop 中的某些属性

转载 作者:行者123 更新时间:2023-12-04 23:47:55 25 4
gpt4 key购买 nike

我正在使用 F# 应用程序中的 Microsoft.Office.Interop.Excel 库(版本 14.0),我似乎无法引用 Interop 接口(interface)中定义的某些属性/类。

例如,如果我有一个 Worksheet 对象,我不能执行以下操作:

let sht = // Get the Worksheet
sht.PageSetup.CenterHeader <- // Set the header

它找不到 CenterHeader 作为 PageSetup 接口(interface)的属性,即使我在对象浏览器中查看 Interop dll 时它就在那里。

仅供引用,我使用的 Interop dll 来自 VS 目录:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Visual Studio Tools for Office\PIA\Office14\Microsoft。 Office.Interop.Excel.dll

更新:其实我说得太快了。不幸的是,建议的类型转换解决方案也不起作用。 VS 认为它没问题,但它在运行时失败并出现以下错误:

无法将“System.__ComObject”类型的 COM 对象转换为“Microsoft.Office.Interop.Excel.IPageSetup”接口(interface)类型。此操作失败,因为 IID 为“{000208B4-0001-0000-C000-000000000046}”的接口(interface)的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(interface)(HRESULT 异常:0x80004002 (E_NOINTERFACE)) .

最佳答案

正如我在评论中所说,F# 不支持 type equivalence for embedded interop types ,因此如果 C# 项目启用了嵌入互操作类型,则 F# 编译器可能无法确定要使用哪个版本的互操作类型。由于 C# 输出程序集中嵌入的类型已被简化为仅使用的成员,因此 F# 编译器无法看到主互操作程序集中类型版本中存在的成员。

解决方法是在 C# 项目上关闭嵌入互操作类型。

关于f# - 无法从 F# 中查看 Excel Interop 中的某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36017672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com