2016-11-28 139 views
0

使用ClosedXML讀取整個Excel文件並返回List<List<object>>的最有效方法是什麼?使用ClosedXML讀取Excel

這不知怎麼不給我數據。我得到空列表。

 var wb = new XLWorkbook(finalFilePath); 
     var ws = wb.Worksheets.First(); 
     var range = ws.RangeUsed(); 
     var colCount = range.ColumnCount(); 
     var rowCount = range.RowCount(); 

     var i = 1; 
     var j = 1; 
     List<List<object>> data = new List<List<object>>(); 
     while (i < rowCount + 1) 
     { 
      List<object> row = new List<object>(); 
      while (j < colCount + 1) 
      { 
       row.Add(ws.Cell(i, j).Value); 
       j++; 
      } 
      data.Add(row); 
      i++; 
     } 
+1

找出原因的列表是空的第一次。例如,列和行計數爲0還是返回的單元格值爲空? –

+0

@FrancoisBotha我正在查看的文檔的使用範圍是A1:B19或類似的東西。我不確定,但也許這個範圍的前幾行是空的單元格使我的代碼在其軌道上短暫停止? – konrad

回答

0

這幹得不錯:

Dictionary<Tuple<int, int>, object> data = new Dictionary<Tuple<int, int>, object>(); 
using (XLWorkbook wb = new XLWorkbook(filePath)) 
{ 
    var ws = wb.Worksheets.First(); 
    var range = ws.RangeUsed(); 

    for (int i = 1; i < range.RowCount() + 1; i++) 
    { 
     for (int j = 1; j < range.ColumnCount() + 1; j++) 
     { 
      data.Add(new Tuple<int, int>(i,j), ws.Cell(i,j).Value); 
     } 
    } 
} 
+0

將其標記爲答案。 –