Come si impedisce che gli zeri iniziali vengano rimossi durante l'importazione di un documento Excel utilizzando C#
Domanda
Sono in grado di connettermi e leggere un file Excel senza problemi.Ma quando si importano dati come i codici postali che hanno zeri iniziali, come si impedisce a Excel di indovinare il tipo di dati e nel processo di eliminare gli zeri iniziali?
Soluzione
Credo che tu debba impostare l'opzione nella stringa di connessione per forzare l'importazione testuale anziché rilevarla automaticamente.
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\path\to\myfile.xlsx;
Extended Properties=\"Excel 12.0 Xml;IMEX=1\";
Il tuo chilometraggio può variare a seconda della versione installata.La proprietà estesa IMEX=1 indica a Excel di trattare i dati mescolati come testo.
Altri suggerimenti
Prefisso con '
Anteponendo il contenuto della cella con ' forza Excel a vederlo come testo anziché come numero.Il simbolo ' non verrà visualizzato in Excel.
Esiste un hack del registro che può forzare Excel a leggere più delle prime 8 righe durante la lettura di una colonna per determinare il tipo:
Modifica
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
Deve essere 0 per leggere tutte le righe o un altro numero per impostarlo su quel numero di righe.
Non che questo avrà un leggero calo di prestazioni.
Penso che il modo per farlo sarebbe formattare il file Excel di origine in modo tale che la colonna sia formattata come Testo anziché Generale.Seleziona l'intera colonna, fai clic con il pulsante destro del mouse e seleziona le celle del formato, seleziona il testo dall'elenco delle opzioni.
Penso che ciò definirebbe esplicitamente che il contenuto della colonna è testo e dovrebbe essere trattato come tale.
Fammi sapere se funziona.
Anche il salvataggio del file come file di testo delimitato da tabulazioni ha funzionato bene.
--- Purtroppo, non possiamo fare affidamento sulle colonne di Excel Doc per rimanere in un formato particolare poiché gli utenti incolleranno regolarmente i dati.Non voglio che l'app si blocchi se facciamo affidamento su un determinato tipo di dati per una colonna.
il prefisso con "funzionerebbe, esiste un modo ragionevole per farlo a livello di programmazione una volta che i dati esistono già nel documento Excel?
Invio di valore 00022556
COME '=" 00022556"'
dal server SQL è un modo eccellente per gestire il problema zero principale
Aggiungi " " prima della stringa.Farà sembrare la stringa in una nuova scheda.