2016-04-07 48 views
1

使用Excel互操作,您可以通过一个片得到使用的行数,像这样:在电子表格灯中,Excel Interop的Worksheet.UsedRange.Rows类似于什么?

_xlSheet.UsedRange.Rows 

(其中“_xlSheet”是Excel.Worksheet)。

Spreadsheet Light中的等效项是什么?

您可以添加一个工作表,像这样:

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

...但你怎么能那么访问该工作表询问它的使用的行数?

回答

2

添加工作表后,它也处于活动状态。这意味着您可以从方法GetWorksheetStatistics中获得WorksheetStatistics。这种统计的实例有一个NumberOfRows属性:

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

如果你想知道所有表的行数,你可以这样做:

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

如果我想在不同的地方/点访问NumberOfRows,我需要调用GetWorksheetStatistics()首先每次,还是访问NumberOfRows确保计数是最新的? –

+1

GetWorksheetStatistics的文档说:*注意:这些信息只在检索时才有效。* @ B.ClayShannon – rene

0

添加到刘若英的回答是:

由于访问统计'NumberOfRows属性不会自动更新(您必须每次调用GetWorksheetStatistics()以获取最新的统计信息),我发现它可以方便地编写该帮助程序方法:

​​

..和然后调用它根据需要:

int lastRow = GetCurrentNumberOfRows();