2011-01-23 26 views
27

herkes satırları saymak için nasıl sözdizimi biliyor?C# EPPlus açık XML sayım satırlar EPPlus ve OpenXML ile

benim çalışma sayfası "çalışma sayfası"

int numberRows = worksheet.rows.count() denir Say? ya worksheet.rows.dimension

ben cevap kesinlikle ilgileniyorum, ama adı verilen bir çalışma sayfası nesnesi ile vb

+0

güzel gönderi .. +1 .. EPPlus hakkında iyi bir dokümantasyon var mı? – MacGyver

+0

Yapmıyorum, ancak indirmenin içerdiği örnekler yardımcı oldu. – rd42

+1

Bunu şimdi, DImension'tan "Satırlar" ve "Sütunlar" özelliklerini kullanarak yapmanın daha verimli yolları vardır. –

cevap

58

"tanımına git" ve şu ya da bu aramaya gibi serin olur cevap bulmak için nasıl 'Çalışma sayfası', çalışma sayfası.Dimension.Start.Row ve worksheet.Dimension.End.Row size ihtiyacınız olan bilgiyi vermelidir. (: Satır 1-5, sütunlar 1-9 için 'I5 A1' vb)

worksheet.Dimension.Address size geleneksel Excel aralığı formatında çalışma sayfası boyutlarını içeren bir dize verecektir.

bir documentation file available yoktur. Birçok durumda, kütüphaneyle oynamak ve bu şekilde cevabı bulmak kadar hızlı olabilir. EPPlus iyi tasarlanmış gibi görünüyor - her şey en azından mantıklı olarak adlandırılmış gibi görünüyor.

+5

+1 link ile doğru cevabı almak için, ama "EPPlus iyi tasarlanmış gibi görünüyor" ile ilgili yorumunuzu kabul etmiyorum. Bunu kendi kendime kullanmayı denedim ve API çok basit, ancak çeşitli kişilerden denediğim birçok örnek xlsx dosyası kütüphanede bir NullReferenceException üretti. Soruna neyin yol açtığını belirlemek için kütüphaneye adım attım ve Excel tarafından okunamayan * .xlsx dosyasının okunamamasına neden olan birçok varsayım yapıldı. Kullanıcı tarafından sağlanan dosyaları okuyorsanız EPPlus'ı kodunuzda bir saatli bomba olarak görürüm. –

+2

Yeterince adil - Kabul etmeliyim ki, mevcut e-tabloları okumak için kütüphaneyi hiç kullanmadım, sadece yeni yazılar yazdım. İkinci amaç için EPPlus bana iyi hizmet etti. Projenin aktif bir gelişme içinde olduğu görülüyor, bu yüzden gelecekteki sürümlerde daha fazla hatanın ütülenmesini umalım. – Quppa

+1

EPPlus ile mevcut XLS/XLSX dosyalarını okumada hiç sorun yaşamadım. Belki bir beta sürümü kullandın. –

12

Bu uç için teşekkürler Quppa. Ben aşağıdaki gibi bir kitabını tablo bir DataTable doldurmak için benim teklifte kullandı:

/// <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 kodunuzu gönderdiğiniz için teşekkür ederiz. – rd42

+0

@Kwex Cevabınız bana bu kadar yardımcı oldu +1 ve Teşekkürler ... – RajeshKdev

+0

WorkSheet.Dimensions.Rows'u kullanmaya ne dersiniz? – MGE

1

Ben sürümü 4.1 ile çalışıyorum ve bu hale getirmek için (önceki cevapları yorumlarına belirtilen) bazı özelliklerini eklemiş gibi görünüyor Daha kolay.

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