[英]f# read xls file - how to parse a value2 object
我嘗試使用F#讀取xls文件,如下所示
open Microsoft.Office.Interop.Excel
let app = ApplicationClass(Visible = false)
let book = app.Workbooks.Open "test.xls"
let sheet = book.Worksheets.[1] :?> _Worksheet
let vals = sheet.UsedRange.Value2
問題是如何將val解析為F#類型? 在fsx.exe中,val顯示為
'val vals: obj = [bound1
bound2
["colname1"; "colname2"; ...]
[1234,5678,]...]
我想首先檢索字符串表示,但printfn "%A" vals.ToString();;
僅顯示"System.Object[,]"
。 如果我然后嘗試訪問vals.[1,1]
,我得到錯誤The field,constructor or member 'item' is not defined
謝謝,
該類型的Value2
的obj
。 如果范圍僅表示單個單元格,則實際類型將是某種基本類型(int,float,decimal,string)。 如果范圍代表幾個單元格(您的情況),則返回的值是obj[,]
類型的二維.NET數組。
您可以將Value2
返回的值Value2
轉換為數組並使用索引器訪問它:
let vals = sheet.UsedRange.Value2 :?> obj[,]
vals.[1, 1]
請注意,返回的數組是基於1的(並且不像通常那樣基於零)。 索引器再次返回obj
,因此您需要將值轉換為其實際類型。 根據您的工作表,這可能是浮點數或字符串:
let firstTitle = vals.[1, 1] :?> string
let firstValue = vals.[2, 1] :?> float
(假設您在A1中有一個標題,在A2中有一個數字)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.