我正在使用LinqToExcel将所有行提取到列表中,但是在这种情况下,我不希望有任何空行。我已经在此处搜索任何解决方案,但都没有成功解决我的问题。
var excelSheetLst = excel.Worksheet<T>(sheetName).Where(s => s.GetPropertyValue("RegisterNumber").ToString() != "").ToList();
在此代码示例中,我遇到以下错误:
System.Data.OleDb.OleDbException:'外部表的格式不正确。'
请注意,类型T始终是属性名RegisterNumber(字符串),而sheetName随表名而变。
编辑:
产生此错误的最小代码
var fileNamePath = "excel.xlsx"; // This excel have empty rows
var sheetName = "Client"; // Sheet name in excel
public class Client
{
public string RegisterNumber { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
var excel = new ExcelQueryFactory(fileNamePath);
excel.DatabaseEngine = DatabaseEngine.Ace;
var excelSheetLst = excel.Worksheet<T>(sheetName).Where(s => s.GetPropertyValue("RegisterNumber").ToString() != "").ToList();
JP。
答案 0 :(得分:0)
我已经用两个行代码解决了这个问题,不知道是否有更好的答案:
var excelSheetLst = excel.Worksheet<T>(sheetName).ToList();
excelSheetLst.RemoveAll(s => s.GetPropertyValue("RegisterNumber") == null);