0
我收到一個來自供應商的.xlsx文件,它包含一個持續時間爲HH:mm:ss格式的列,當我在Excel中打開文件時顯示爲日期,但實際上應該只是一個字符串。如何在使用ExcelDataReader.CreateReader()時解析DateTime解析中的System.FormatException錯誤?
我想使用ExcelDataReader將這個.xslx文件讀入我的c#應用程序,而無需在運行我的應用程序之前手動修改或刪除列。
FileStream fs = File.Open(extractedFilePath, FileMode.Open, FileAccess.Read);
var reader = ExcelReaderFactory.CreateReader(fs);
//I've also tried using ExcelReaderFactory.CreateOpenXmlReader(fs) and get the same error
然而,當我試圖創建一個閱讀器上面,我得到以下錯誤:
System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
at System.DateTime.ParseExact(String s, String format, IFormatProvider provider, DateTimeStyles style)
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.ConvertCellValue(String rawValue, String aT, String aS)
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.ReadCell(XmlReader xmlReader, Int32 nextColumnIndex)
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.ReadRow(XmlReader xmlReader, Int32 nextRowIndex)
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.<ReadSheetData>d__73.MoveNext()
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.<ReadWorksheetStream>d__71.MoveNext()
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.<ReadWorksheetStream>d__70.MoveNext()
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet.ReadWorksheetGlobals()
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorksheet..ctor(ZipWorker document, XlsxWorkbook workbook, XlsxBoundSheet refSheet)
at ExcelDataReader.Core.OpenXmlFormat.XlsxWorkbook.<ReadWorksheets>d__45.MoveNext()
at ExcelDataReader.ExcelDataReader`2.Reset()
at ExcelDataReader.ExcelOpenXmlReader..ctor(Stream stream, ExcelReaderConfiguration configuration)
at ExcelDataReader.ExcelReaderFactory.CreateOpenXmlReader(Stream fileStream, ExcelReaderConfiguration configuration)
有沒有解決這個錯誤的方法嗎?
曾經有指定如何與一個額外的文件讀取列的方式。我多年沒有這樣做,但這可能值得研究。 – user12345
我想說這可能是ExcelDataReader中的一個錯誤。在你的地方,我會向維護者提交一個MCVE的bug。 – Joe