我有一个使用ExcelReaderFactory
从Excel导入数据到数据库的过程。但是当存在空行/列时,我们会遇到问题。以下是我的原始代码:
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileContent);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
DataTable dataTable = result.Tables[0].Rows
这会引起两个问题:
如果末尾存在空行,则它们将在数据表中保留。
如果末尾存在空列,则它们将在数据表中保留。
有没有办法同时删除空行和空列。 我可以使用以下代码从数据表中删除空行
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileContent);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
DataTable dataTable = result.Tables[0].Rows
.Cast<DataRow>()
.Where(row => !row.ItemArray.All(field => field is DBNull ||
string.IsNullOrWhiteSpace(field as string ?? field.ToString())))
.CopyToDataTable();
return dataTable;
但是它不会移除空列。是否有更好的方法来实现呢?
如何同时移除空列?
microsoft.ace.oledb
而不是OpenXML
库。这样你可能就不会遇到这个问题了。 - T.S.