簡體   English   中英

F#將Excel文件解析為元組數組

[英]F# Parse Excel File Into Tuple Array

對此帖子有后續問題。 我想將Excel電子表格的內容放入一個元組數組,其中每個元組對應於電子表格中的每一行。

我從遍歷整個范圍開始,如下所示:

    let path = "XXX.xlsx"
    let app = ApplicationClass(Visible = false)
    let book = app.Workbooks.Open path
    let sheet = book.Worksheets.[1] :?> _Worksheet
    let content = sheet.UsedRange.Value2 :?> obj[,]
    for i=content.GetLowerBound(0) to content.GetUpperBound(0) do
        for j=content.GetLowerBound(1) to content.GetUpperBound(1) do

但是讓我覺得效率很低。 如果我可以使用基本API規范中的某些可用內容?

提前致謝

Array2D模塊為2D陣列實現一些常用功能。

我猜您想使用Array2D.iterArray2D.iteri替換您的for循環。

將每行(二維數組)轉換為元組(在單維行中)的直接方法是完成開始的工作-只需遍歷所有行並構造一個元組:

let tuples = 
  [ for i in contents.GetLowerBound(0) .. contents.GetUpperBound(0) -> 
      contents.[i,0], contents.[i,1], contents.[i,2] ]

為此,您需要(靜態地)知道行的長度。 這是因為F#元組是固定長度的元組,並且檢查了長度。 上面的例子中假定存在僅有3具有索引元素012 如果長度是動態的,那么您可能應該繼續使用2D數組而不是元組列表。

另一個選擇是完全繞過Excel引擎。 有兩種方法可以做到這一點,但是我獲得了巨大成功的是“ SpreadsheetGear”。 它不是免費的(減少票數),但是它非常緊密且快速地復制了Excel API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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