我想獲取一個基於F#的加載項的Excel命名範圍中的數據。我希望能夠在工作簿中的任何位置使用命名範圍,而不僅僅是特定的工作表。被迫使用mutable來讀取Excel ThisWorkbook.Names?
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
給
類型「名」是不是與類型兼容「序列<‘一>’
是否有這樣做的更多的F#習慣的方法?
嘗試'Seq.toList(Seq.cast name_list)',甚至可能指定一個類型(即'let name_seq:... = ...')。 – 2012-07-07 19:23:14