2016-07-04 43 views
1

我一直在试图有效地获得行号。但是在数据被清除并且单元没有被明确删除的情况下它失败了。获取最新的数据填写excel行号在C#

我想这是因为“使用范围”。

我所做的是使用EPPLUS

using (var excel = new ExcelPackage(hpf.InputStream)) 
{ 
    var ws = excel.Workbook.Worksheets["Sheet1"]; 

    if(ws.Dimension.End.Row > 2003) 
    { 
     var result = new JsonResult(); 
     result.Data = "FileLimitExceeded" ; 

但它给了我不正确的数据。如何有效地获得最后的计数。

我发现像

var Lastrow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row; 

但命名空间我无法理解。任何人都可以帮助我完成正确的答案吗?

+1

参考http://stackoverflow.com/questions/7674573/programmatically-getting-the-last-filled-excel-row-using-c-sharp –

+0

@sowjanyaattaluri这就是要点。即使在那里接受的答案也遭受了我所猜测的旧范围收缩问题。 – StrugglingCoder

+0

Json与Excel或EPPlus有什么关系?你使用的范围在哪里?因为您发布的代码不会尝试访问任何单元格 –

回答

0

我前几天来到这个senario,所以我做了什么,我读了数据并放入数据表中,然后过滤数据以显示数据不为空时的记录。 你可以采用相同的方法。

+0

这应该是评论,而不是答案。此外,如果您可以将数据作为DataTable读取,则您已知道有效数据范围 –

+0

我读取的Tha数据包含空白行,因此可以消除没有数据的重复行。这完全有道理。 –

+0

不完全。如果指定一个范围,Excel将返回单元格,不管它们是否有数据。您*不需要将此范围加载到DataTable中以查找实际包含数据的行。对单元的LINQ查询将完成相同的工作。最简单的选择是在生成文件时创建命名的范围/表格,然后按名称访问它们 –