.xlsx、.xls、.csv ファイルの読み取りに ExcelDataReader を使用していますが、読み取りではすべてが文字列として扱われるため、#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として?