ExcelDataReader 在读取 excel 文件时读取像 #N/A 这样的值作为字符串而不是 NULL 或丢失
ExcelDataReader reading values like #N/A as string instead of NULL or missing while reading excel file
我正在使用 ExcelDataReader 读取 .xlsx、.xls、.csv 文件,同时读取它会将所有内容都视为字符串,因此 #N/A 或 #value!也被视为字符串并在我尝试对它们进行计算时给出异常。
FileStream stream = File.Open(strFilePath, FileMode.Open, FileAccess.Read);
//Reading from a binary Excel file ('97-2003 format; *.xls)
string extension = System.IO.Path.GetExtension(strFilePath).ToLower();
IExcelDataReader excelReader;
if (extension.Equals(".csv"))
{
excelReader = ExcelReaderFactory.CreateCsvReader(stream);
}
else if (extension.Equals(".xls"))
{
excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else
{
excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
//...
//DataSet - The result of each spreadsheet will be created in the result.Tables
//DataSet - Create column names from first row
DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
excelReader.Close();
return result.Tables[sheetno];
这是我用于导入 excel 文件的代码。怎么修改成#N/A或者#value!作为 0 或 NULL?
这是 ExcelDataReader 的 XLSX 解析器中的错误,需要库中的代码修复。
在此处跟踪错误:
https://github.com/ExcelDataReader/ExcelDataReader/issues/329
带有 XLS 的 ExcelDataReader 按预期工作:它 return对于有错误的字段为 NULL。
带有 CSV 的 ExcelDataReader 可能会继续 return 将错误作为字符串,因为 CSV 格式不会消除错误字符串与常规字符串的歧义。
我正在使用 ExcelDataReader 读取 .xlsx、.xls、.csv 文件,同时读取它会将所有内容都视为字符串,因此 #N/A 或 #value!也被视为字符串并在我尝试对它们进行计算时给出异常。
FileStream stream = File.Open(strFilePath, FileMode.Open, FileAccess.Read);
//Reading from a binary Excel file ('97-2003 format; *.xls)
string extension = System.IO.Path.GetExtension(strFilePath).ToLower();
IExcelDataReader excelReader;
if (extension.Equals(".csv"))
{
excelReader = ExcelReaderFactory.CreateCsvReader(stream);
}
else if (extension.Equals(".xls"))
{
excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else
{
excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
//...
//DataSet - The result of each spreadsheet will be created in the result.Tables
//DataSet - Create column names from first row
DataSet result = excelReader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
excelReader.Close();
return result.Tables[sheetno];
这是我用于导入 excel 文件的代码。怎么修改成#N/A或者#value!作为 0 或 NULL?
这是 ExcelDataReader 的 XLSX 解析器中的错误,需要库中的代码修复。
在此处跟踪错误: https://github.com/ExcelDataReader/ExcelDataReader/issues/329
带有 XLS 的 ExcelDataReader 按预期工作:它 return对于有错误的字段为 NULL。
带有 CSV 的 ExcelDataReader 可能会继续 return 将错误作为字符串,因为 CSV 格式不会消除错误字符串与常规字符串的歧义。