我正在尝试获取基于 F# 的加载项的 Excel 命名范围中的数据。我希望能够在工作簿的任何地方使用命名范围,而不仅仅是特定的工作表。
let xlRange (xl:Microsoft.Office.Interop.Excel.Application, name:string) =
let name_list = xl.ThisWorkbook.Names:Microsoft.Office.Interop.Excel.Names
let mutable result=null
for n in name_list do
let nn = n :?> Microsoft.Office.Interop.Excel.Name
if nn.Name = name then
let range=nn.RefersToRange
result <- range.Value2 :?> obj[,]
result
上面的代码有效,但我不喜欢它,因为我必须使用可变和命令式的样式。问题是 Excel.Names 集合表现不佳。例如
let name_seq = Seq.toList name_list
给
'Names' 类型与 'seq<'a>' 类型不兼容
有没有更 F# 惯用的方式来做到这一点?