2011-01-23 26 views
27

使用EPPlus和OpenXML有人知道如何計算行的語法嗎?C#EPPlus OpenXML計數行

說我的工作表被稱爲 「工作表」

int numberRows = worksheet.rows.count()?或worksheet.rows.dimension

我在回答肯定是有興趣的,但如何找到答案會很酷,像「去定義」,並期待這個或那個,等

+0

不錯的帖子.. +1 ..你碰巧在EPPlus上有什麼好的文檔嗎? – MacGyver 2012-02-13 21:57:10

+0

我不這樣做,但下載中包含的示例很有幫助。 – rd42 2012-02-14 16:02:22

+1

現在有更高效的方法來使用DImension中的「行」和「列」屬性。 – 2016-10-14 16:24:55

回答

58

隨着稱爲工作表對象'worksheet',worksheet.Dimension.Start.Row和worksheet.Dimension.End.Row應該爲您提供所需的信息。

worksheet.Dimension.Address將爲您提供一個字符串,其中包含傳統Excel範圍格式的工作表維度(例如,對於行1-5,列1-9,爲'A1:I5')。

有一個documentation file available。在很多情況下,玩圖書館和以這種方式找到答案可能會很快。 EPPlus看起來設計得很好 - 至少所有東西都是按邏輯命名的。

12

感謝您的提示Quppa。我用它在我的出價來填充從工作簿電子表格如下數據表:

/// <summary> 
    /// Converts a Worksheet to a DataTable 
    /// </summary> 
    /// <param name="worksheet"></param> 
    /// <returns></returns> 
    private static DataTable WorksheetToDataTable(ExcelWorksheet worksheet) 
    { 
     // Vars 
     var dt = new DataTable(); 
     var rowCnt = worksheet.Dimension.End.Row; 
     var colCnt = worksheet.Dimension.End.Column + 1; 

     // Loop through Columns 
     for (var c = 1; c < colCnt; c++) 
     { 
      // Add Column 
      dt.Columns.Add(new DataColumn()); 

      // Loop through Rows 
      for(var r = 1; r < rowCnt; r++) 
      { 
       // Add Row 
       if (dt.Rows.Count < (rowCnt-1)) dt.Rows.Add(dt.NewRow()); 

       // Populate Row 
       dt.Rows[r - 1][c - 1] = worksheet.Cells[r, c]; 
      } 
     } 

     // Return 
     return dt; 
    } 
1

我與4.1版本的工作,它看起來像他們增加了一些特性(從以前的答案評論中提到),使這個更輕鬆。

string Filepath = "c:\excelfile.xlsx"; 
FileInfo importFileInfo = new FileInfo(FilePath); 
using(var excelPackage = new ExcelPackage(importFileInfo)) 
{ 
    ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[1]; 
    int rowCount = worksheet.Dimension.Rows; 
    int colCount = worksheet.Dimension.Columns; 
}