gpt4 book ai didi

excel - F# ExcelUsedRange 没有属性或方法

转载 作者:行者123 更新时间:2023-12-03 02:10:47 24 4
gpt4 key购买 nike

这是从 F# Excel UsedRange is not Defined 开始的讨论的延续,这个问题已经通过将 ActiveSheet 对象向下转换为工作表来解决。然而,这样做后,我遇到了一个新问题:UsedRange 除了标准对象方法之外没有公开任何属性或方法。

我的解决方案引用了 Microsoft.Office.Interop.Excel 和 Microsoft.Office.Tools.Excel.v4.0.Utilities。

open Microsoft.Office.Interop.Excel
open Microsoft.Office.Tools.Excel

let xl = ApplicationClass()
xl.Workbooks.OpenText(fileName)
let wb = xl.Workbooks.Item(1)
let ws = wb.ActiveSheet :?> Worksheet

ws.UsedRange.EntireColumn.AutoFit()
// "The field, constructor or member 'EntireColumn' is not defined".

ws.UsedRange.Sort(xl.Range(sortKey1), XlSortOrder.xlAscending)
// "The field, constructor or member 'Sort' is not defined".

xl.Range("A2").Value <- 1
xl.Range("A2").AutoFill(xl.Range("A2:A" + ws.UsedRange.Rows.Count),
XlAutoFillType.xlFillSeries) |> ignore
// "The field, constructor or member 'Rows' is not defined".

ws.UsedRange.
// Intellisense shows only default object members, e.g. Equals, GetEnumerator, etc.

我可以毫无问题地使用 Range:

xl.Range("A1").EntireColumn.Insert() |> ignore

UsedRange 被识别为范围。向下转换为 Range,Visual Studio 警告我:“这种类型测试或向下转换将始终有效”。

范围有效。使用的范围被识别为范围。因此,UsedRange 应该可以工作。但事实并非如此。我心里很矛盾。

Visual Studio 2010 高级版、F# 2.0。

我很欣赏您提供的任何见解。谢谢。

最佳答案

您确定您的 F# 项目引用了所有必要的互操作程序集的正确版本吗?我刚刚在 F# 脚本文件中尝试了您的代码,添加以下行后可以正常看到 UsedRange 的成员:

#r "office.dll"
#r "Microsoft.Office.Interop.Excel.dll"

我可以看到像 EntireColumnSort 这样的成员,它只提示代码片段中的一行试图在字符串上使用 + 和整数:

xl.Range("A2").AutoFill(xl.Range("A2:A" + (string ws.UsedRange.Rows.Count)), 
XlAutoFillType.xlFillSeries) |> ignore

我在 Visual Studio 2010 中将其作为脚本文件以及在新项目中进行了尝试(添加两个引用后,它似乎工作正常)。我添加了对安装在 Visual Studio 安装目录中“Visual Studio Tools for Office\PIA”下的 dll 的引用。

关于excel - F# ExcelUsedRange 没有属性或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039153/

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