[英]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.iter
或Array2D.iteri
替換您的for循環。
將每行(二維數組)轉換為元組(在單維行中)的直接方法是完成開始的工作-只需遍歷所有行並構造一個元組:
let tuples =
[ for i in contents.GetLowerBound(0) .. contents.GetUpperBound(0) ->
contents.[i,0], contents.[i,1], contents.[i,2] ]
為此,您需要(靜態地)知道行的長度。 這是因為F#元組是固定長度的元組,並且檢查了長度。 上面的例子中假定存在僅有3具有索引元素0
, 1
和2
。 如果長度是動態的,那么您可能應該繼續使用2D數組而不是元組列表。
另一個選擇是完全繞過Excel引擎。 有兩種方法可以做到這一點,但是我獲得了巨大成功的是“ SpreadsheetGear”。 它不是免費的(減少票數),但是它非常緊密且快速地復制了Excel API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.