ExcelDataReader在读取excel文件时读取#N / A等值作为字符串而不是NULL或丢失

时间:2018-04-16 12:14:29

标签: asp.net exceldatareader

我正在使用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?

1 个答案:

答案 0 :(得分:0)

这是ExcelDataReader的XLSX解析器中的错误,需要在库中修复代码。

此处跟踪错误: https://github.com/ExcelDataReader/ExcelDataReader/issues/329

带有XLS的ExcelDataReader按预期工作:对于出错的字段,它返回NULL。

带有CSV的ExcelDataReader可能会继续以字符串形式返回错误,因为CSV格式不会消除常规字符串中的错误字符串的歧义。