Come si impedisce che gli zeri iniziali vengano rimossi durante l'importazione di un documento Excel utilizzando C#

StackOverflow https://stackoverflow.com/questions/22879

  •  09-06-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top