2011-01-23 26 views
27

EPPlusとOpenXMLを使用すると、行を数える方法の構文を知っている人はいますか?C#EPPlus OpenXML count rows

は私のワークシートは、 "ワークシート"

int numberRows = worksheet.rows.count()と呼ばれていると言いますか?またはworksheet.rows.dimension

私は答えでは確かに興味があるんだけど、というワークシートオブジェクトを使用するとなど、

+0

いい投稿... +1 EPPlusに関する良いドキュメントはありますか? – MacGyver

+0

私はそうではありませんが、ダウンロードに含まれている例は役に立ちました。 – rd42

+1

DImensionの「行」と「列」プロパティを使用して、これを行うより効率的な方法があります。 –

答えて

58

を「定義に移動」し、このまたはその探しのようにクールになる答えを見つける方法'worksheet'、worksheet.Dimension.Start.Rowおよびworksheet.Dimension.End.Rowは、必要な情報を提供します。

worksheet.Dimension.Addressは、従来のExcelレンジ形式(たとえば、行1〜5、列1〜9の場合は「A1:I5」)のワークシートの寸法を含む文字列を提供します。

documentation file availableがあります。多くの場合、図書館で遊んでその答えを見つけ出すのと同じくらい早いかもしれません。 EPPlusはうまく設計されているようです。少なくとも、すべては論理的に名前が付けられているようです。

+5

+1の正解はリンクありますが、「EPPlusはうまく設計されているようです」とのあなたのコメントに同意しません。私はそれを自分自身で使用しようとしましたが、APIは簡単ですが、さまざまな個人から試したxlsxファイルのサンプルの多くは、ライブラリ内でNullReferenceExceptionを生成しました。私はライブラリを突き抜けて何が問題を引き起こしているのかを特定し、Excelで生成された有効な* .xlsxを読み込みに失敗させる多くの仮定が行われました。あなたがユーザー提供のファイルを読んでいるなら、私はEPPlusをあなたのコードで時間を計る爆弾と見なします。 –

+2

十分な公正 - 私は、既存のスプレッドシートを読み込むためにライブラリを使ったことはありません。後者の目的のために、EPPlusは私によく役立った。このプロジェクトは積極的に進んでいるようですので、将来のリリースでより多くのバグが撲滅されることを願っています。 – Quppa

+1

EPPlusで既存のXLS/XLSXファイルを読むのに問題はありませんでした。たぶんあなたはベータ版を使用しました。 –

12

このチップはおかげでありがとう。私は以下のようにワークブックのスプレッドシートからのDataTableに移入するために私の入札でそれを使用:

/// <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

コードを投稿してくれてありがとう@Kwex。 – rd42

+0

@Kwexあなたの答えはとても助かります。+1とありがとう... – RajeshKdev

+0

WorkSheet.Dimensions.Rowsを使用するのはどうですか? – MGE

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; 
}