LinqToExcel空白行

时间:2013-02-06 20:37:17

标签: linq-to-excel

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

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

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

Input excel file

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

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

知道如何解决问题吗?

感谢。

2 个答案:

答案 0 :(得分:4)

您可以向LINQ语句添加条件,以便不包括空行。

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

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

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

答案 1 :(得分:0)

  

但LinqToExcel也以某种方式读取它们

这是Excel的怪癖。它会记住当Sheet处于最大尺寸时使用的行数和列数。您可以通过键入Ctrl-End来查看。这将选择最后使用的行和列中的单元格。

Office支持介绍了如何重置上一个单元格:Locate and reset the last cell on a worksheet

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

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