【问题标题】:Get the last data filled excel row number in C#在C#中获取最后一个数据填充的excel行号
【发布时间】:2016-07-04 21:01:06
【问题描述】:

我一直在尝试有效地获取行号。但在清除数据且未明确删除单元格的情况下,它会失败。

我猜是因为“使用范围”。

我所做的是使用 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;

但是我无法理解的命名空间。谁能帮我一个完整而正确的答案?

【问题讨论】:

  • @sowjanyaattaluri 这就是重点。我猜即使是接受的答案也会受到使用范围收缩问题的影响。
  • Json 与 Excel 或 EPPlus 有什么关系?您使用的范围在哪里?因为您发布的代码不会尝试访问任何单元格

标签: c# excel


【解决方案1】:

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

【讨论】:

  • 这应该是评论,而不是答案。另外,如果你能把数据读成DataTable,你就已经知道有效的数据范围了
  • 我读取的数据包含空白行,因此最好消除没有数据的重复行。这完全有道理。
  • 不完全。如果您指定范围,Excel 将返回单元格,无论它们是否有数据。您不需要将此范围加载到 DataTable 中以查找实际包含数据的行。对单元格的 LINQ 查询将完成相同的工作。最简单的选择是在生成文件时创建命名范围/表,然后按名称访问它们
  • 您好,准确查找数据的方法在链接stackoverflow.com/questions/27108153/…中有描述。请访问,我认为它会有所帮助。
  • 我不是 OP。我评论说这种方法并不比查看所有单元格更好,只是不需要。您可以对一系列单元格执行where LINQ 查询。最好的选择是使用命名范围,这样您就不需要搜索限制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多