2015-04-15 17 views
17

Meine Excel-Datei ist nicht in Tabellendaten. Ich versuche, aus einer Excel-Datei zu lesen. Ich habe Abschnitte in meiner Excel-Datei, die tabellarisch sind.Lesen von Excel-Datei mit ClosedXML

Ich muss die Zeilen 3 bis 20 durchlaufen, die tabellarisch sind und die Daten lesen.

ist hier Party meines Codes:

 string fileName = "C:\\Folder1\\Prev.xlsx"; 
    var workbook = new XLWorkbook(fileName); 
    var ws1 = workbook.Worksheet(1); 

Wie kann ich Schleife durch Reihen 3-20 und lesen Spalten 3,4, 6, 7, 8? Auch wenn eine Zeile leer ist, wie stelle ich fest, dass ich es überspringen kann, ohne zu lesen, dass jede Spalte einen Wert für eine bestimmte Zeile hat.

Antwort

20

Um eine Zeile zuzugreifen:

var row = ws1.Row(3); 

Um zu überprüfen, ob die Zeile leer ist:

bool empty = row.IsEmpty(); 

Um eine Zelle (Spalte) in einer Reihe-Zugriff:

var cell = row.Cell(3); 

Zur Holen Sie sich den Wert aus einer Zelle:

object value = cell.Value; 
// or 
string value = cell.GetValue<string>(); 

Weitere Informationen finden Sie unter documentation.

+0

Kennen Sie eine Möglichkeit, auf Zellstile zuzugreifen und sie als HTML-Format anzuwenden? – xwpdev

+0

Das ist eine andere Frage (die Sie vielleicht erstellen sollten). Sie können auf Styles mit 'cell.Style ....' zugreifen, aber Sie können diese, soweit ich weiß, nicht automatisch in HTML- oder CSS-Styles konvertieren. Sie müssten selbst einen Konverter schreiben. – Raidri

+0

Könnten Sie mir sagen, wie Sie den Wert der Zelle mithilfe des Feldnamens –

2

Ich bevorzuge mit RowsUsed() Methode, um eine Liste nur der Zeilen zu erhalten, die nicht leer sind oder vom Benutzer bearbeitet wurden. Auf diese Weise kann ich vermeiden, für jede Zeile Prüfungen zu machen, ob sie leer sind oder nicht.

Ich bin nicht sicher, ob es genau die Problembeschreibung passt, die Sie in Ihrem Beitrag beschrieben haben, aber dieses Code-Snippet kann Ihnen helfen, 3. bis 20. Zeile Zahlen aus allen nicht leeren Zeilen zu verarbeiten die leeren Zeilen herausgefiltert, bevor mit der Verarbeitung begonnen wurde. Das Filtern der nicht leeren Zeilen vor dem Beginn der Verarbeitung kann sich auf die Zeilennummern auswirken, die Sie tatsächlich verarbeiten möchten.

Aber ich finde, dass RowsUsed() Methode in jedem allgemeinen Szenario sehr hilfreich ist, wenn Sie die Zeilen eines Excel-Blattes verarbeiten.

string fileName = "C:\\Folder1\\Prev.xlsx"; 
using (var excelWorkbook = new XLWorkbook(fileName)) 
{ 
    var nonEmptyDataRows = excelWorkbook.Worksheet(1).RowsUsed(); 

    foreach (var dataRow in nonEmptyDataRows) 
    { 
     //for row number check 
     if(dataRow.RowNumber() >=3 && dataRow.RowNumber() <= 20) 
     { 
      //to get column # 3's data 
      var cell = dataRow.Cell(3).Value; 
     } 
    } 
}