【问题标题】:LinqToExcel blank rowsLinqToExcel 空白行
【发布时间】:2013-02-06 20:37:16
【问题描述】:

我正在使用 LinqToExcel 轻松将 Excel 数据导入 SQL Server。

        var fileName = ConfigurationManager.AppSettings["ExcelFileLocation"];
        var excel = new ExcelQueryFactory(fileName);
        var employees = excel.Worksheet<Employee>().ToList();

一切都很好,只有1个问题,字段精确映射到数据库表字段,并且在数据库中它们不是NULL。

话虽如此,如果你看一下这个 Excel 文件的截图,第 3 行下面的一些行实际上不是空的。没有空格,但不知何故 LinqToExcel 也会读取它们,当然我得到 EntityFramework 抛出的异常,说该字段不能为空。

我需要选择 3 到 8980 以下的所有空白行,然后删除它们。 只有这样我才能使用 LinqToExcel,而不是尝试导入空白行。

知道如何解决这个问题吗?

谢谢。

【问题讨论】:

    标签: linq-to-excel


    【解决方案1】:

    您可以在 LINQ 语句中添加一个条件,以便不包括空行。

    var employees = excel.Worksheet<Employee>().Where(x => x.VS2012 != null).ToList();
    

    如果检查 not null 不起作用,那么你可以检查一个空字符串

    var employees = excel.Worksheet<Employee>().Where(x => x.VS2012 != "").ToList();
    

    【讨论】:

    • 谢谢,当然,完全忘记了 linq 谓词 :)
    【解决方案2】:

    但不知何故,LinqToExcel 也会读取它们

    这是 Excel 的一个怪癖。它会记住当工作表处于最大尺寸时使用了多少行和多少列。您可以通过键入 Ctrl-End 来查看。这将选择曾经使用过的最后一行和最后一列中的单元格。

    Office 支持描述如何重置最后一个单元格:Locate and reset the last cell on a worksheet

    基本上,您删除多余的行和列,清除格式,保存工作簿并重新打开它。

    如果您有等待导入的 Excel 文件并且没有时间部署固定的 Linq2Excel 客户端,则此解决方法可能很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多