2

使用 Excel 互操作,您可以获得工作表使用的行数,如下所示:

_xlSheet.UsedRange.Rows

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

Spreadsheet Light 中的等价物是什么?

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

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

...但是您如何访问该工作表以询问其使用的行数?

4

2 回答 2

3

添加工作表后,它也处于活动状态。这意味着您可以WorksheetStatistics从方法中获取GetWorksheetStatistics。该统计实例有一个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));
}
于 2016-04-07T16:53:43.787 回答
0

添加到rene的答案:

由于访问统计信息的 NumberOfRows 属性不会自动更新(您必须每次调用 GetWorksheetStatistics() 来获取最新的统计信息),我发现编写这个辅助方法很方便:

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

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

int lastRow = GetCurrentNumberOfRows();
于 2016-04-07T20:27:30.977 回答