2017-09-14 5 views
0

Je reçois un fichier .xlsx d'un fournisseur et il contient une colonne pour la durée au format HH: mm: ss, qui lorsque j'ouvre le fichier dans Excel apparaît comme une date mais devrait être juste une chaîne.Comment puis-je résoudre une erreur System.FormatException sur l'analyse DateTime lors de l'utilisation de ExcelDataReader.CreateReader()?

Je voudrais lire ce fichier .xslx dans mon application C# en utilisant ExcelDataReader sans avoir à modifier ou supprimer manuellement la colonne avant d'exécuter mon application.

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 

Cependant, lorsque je tente de créer un lecteur comme ci-dessus, je reçois l'erreur suivante:

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) 

est-il un moyen de résoudre cette erreur?

+0

il y avait un moyen de spécifier comment lire des colonnes avec un fichier supplémentaire. Je n'ai pas fait cela depuis des années mais cela peut valoir la peine d'être recherché. – user12345

+0

Je dirais que cela pourrait bien être un bug dans ExcelDataReader. À votre place, je soumettrais un bug avec un MCVE aux mainteneurs. – Joe

Répondre