2016-04-07 16 views
1

Mit Excel Interop, können Sie die Anzahl der Zeilen in Verwendung durch ein Blatt wie so erhalten:Was ist das Analog zu Excel Interop's Worksheet.UsedRange.Rows in Spreadsheet Light?

_xlSheet.UsedRange.Rows 

(wobei "_xlSheet" ist ein Excel.Worksheet).

Was ist das Äquivalent in Spreadsheet Light?

Sie können ein Arbeitsblatt wie so hinzufügen:

var sl = new SLDocument(); 
. . . 
sl.AddWorksheet("SheetsToTheWind"); 

... aber wie kann man dann die Arbeitsblatt Zugriff darauf verlassen, für seine verwendete Zeile abzufragen?

Antwort

2

Nach dem Hinzufügen des Arbeitsblattes ist es auch aktiv. Das bedeutet, dass Sie die WorksheetStatistics von der Methode GetWorksheetStatistics erhalten können. Die Statistik-Instanz hat eine NumberOfRows Eigenschaft:

// NOTE: The information is only current at point of retrieval. 
var stats = sl.GetWorksheetStatistics(); 
var rowcount = stats.NumberOfRows; 

Wenn Sie die Zeilenanzahl aller Blätter wissen wollen, was Sie tun können:

foreach(var name in sl.GetSheetNames()) 
{ 
    sl.SelectWorksheet(name); 
    var stats = sl.GetWorksheetStatistics(); 
    var rowcount = stats.NumberOfRows;  
    Trace.WriteLine(String.Format("sheet '{0}' has {1} rows", name, rowcount)); 
} 
+0

Wenn ich NumberOfRows an verschiedenen Orten/Punkte zugreifen möchten, muss ich GetWorksheetStatistics() zuerst jedes Mal anrufen, oder hat Zugriff auf NumberOfRows stellen Sie sicher, dass die Zählung aktuell ist? –

+1

Die Dokumentation für GetWorksheetStatistics sagt: * HINWEIS: Die Informationen sind nur zum Zeitpunkt des Abrufs aktuell. * @ B.ClayShannon – rene

0

zu rene Antwort hinzu:

Da die Statistiken zugreifen Die NumberOfRows-Eigenschaft wird nicht automatisch aktualisiert (Sie müssen GetWorksheetStatistics() jedes Mal aufrufen, um die aktuellen Statistiken zu erhalten). Ich fand es praktisch, diese Hilfsmethode zu schreiben:

private int GetCurrentNumberOfRows() 
{ 
    // This reference to "sl" assumes that you have declared "SLDocument sl;" and 
    // instantiated it ("sl = new SLDocument();"), perhaps in your class' constructor 
    var stats = sl.GetWorksheetStatistics(); 
    return stats.NumberOfRows; 
} 

..und nennen es dann je nach Bedarf:

int lastRow = GetCurrentNumberOfRows();