ExcelDataReader – No data is available for encoding 1252

Lo scorso mese durante uno sviluppo ho avuto la necessità di convertire un file xlsx tramite ExcelDataReader in formato testuale (csv/txt) all’interno di una Azure Function scritta in NETCore3. Sulla carta era tutto semplice, ma il classico problema dietro l’angolo era pronto a farmi visita. La fase di sviluppo, i primi test in locale ed i successivi in cloud sono andati via lisci senza alcun problema. Nel momento in cui ho dato in pasto alla function dei file non mie e provenienti dall’estero con una codifica totalmente diversa dalla nostra sono cominciati i problemi e le eccezioni .
NotSupportedException: No data is available for encoding 1252
Aprendo il live stream della function ed Application Insight il messaggio di errore era molto chiaro: NotSupportedException: No data is available for encoding 1252. Il come risolverlo per permettere la conversione di tutti i file excel quello non lo era. Dopo una serie di ricerche (sia lodato StackOverflow in primo luogo) la soluzione è talmente semplice che sono scoppiato a riderci sopra per sdrammatizzare il momento di panico.
La soluzione si base su due (+1) passaggi veramente semplici
Tramite nuget aggiungere il pacchetto System.Text.Encoding.CodePages
Tramite nuget aggiornare il pacchetto ExcelDataReader precedentemene installato (non è obbligatorio, ma consigliato)
Aprire il file Startup.cs e cercare il metodo public void ConfigureServices(IServiceCollection services)
Ed ora? Vi basterà modificare ConfigureServices nel seguente modo: Startup - ConfigureServices
|
|
Ora non vi resta che provare il tutto ed -in teoria- il problema è risolto!