簡體   English   中英

f#讀取xls文件 - 如何解析value2對象

[英]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

謝謝,

該類型的Value2obj 如果范圍僅表示單個單元格,則實際類型將是某種基本類型(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM