Erreurs de lecture de files C # Excel

Context

J'ai un programme qui lit et interprète certains files de rapport Excel simples. Les files sont à la fois des extensions xls et xlsx.

J'ai d'abord converti le file en stream:

FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.ReadWrite); 

alors, pour le xlsx:

 IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream). 

pour xls:

 IExcelDataReader excelReader = Excel.ExcelReaderFactory.CreateBinaryReader(stream); 

Problème

Les files xls d'un programme tiers peuvent être ouverts par mon programme Excel MS Office 2013 , alors que mon programme C # affiche une erreur lors de la phase d'émission .

J'ai regardé dans le file et j'ai découvert que bien que MS Excel puisse l'ouvrir, il n'a pas l'en-tête Excel standard. Cliquez pour les files joints .

Si je sauvegarde le file comme Excel xls, il est converti en file Excel normal et peut être ouvert par mon lecteur C # stream et manipulé comme je le souhaite.

Des questions

  1. Quel format est le file Excel original d'un tiers?
  2. Comment puis-je convertir un tel file en file / stream Excel valide?