Excel CSV – Formato celle numeriche

Produco un report come file CSV. Quando provo ad aprire il file in Excel, si ipotizza il tipo di dati basato sul contenuto della cella e lo riformatta di conseguenza.

Ad esempio, se il file CSV contiene

...,005,... 

Quindi Excel lo mostra come 5. C’è un modo per sovrascriverlo e visualizzare 005?

Preferirei fare qualcosa sul file stesso, in modo che l’utente potesse semplicemente fare doppio clic sul file CSV per aprirlo.

Io uso Excel 2003.

    Non esiste un modo semplice per controllare la formattazione di Excel applicata all’apertura di un file .csv. Tuttavia elencati di seguito sono tre approcci che potrebbero aiutare.

    La mia preferenza è la prima opzione.

    Opzione 1: modifica i dati nel file

    È ansible modificare i dati nel file .csv come segue …, = “005” , … Questo verrà visualizzato in Excel come …, 005 , …

    Excel avrà mantenuto i dati come una formula, ma copiando la colonna e utilizzando i valori speciali di incolla si eliminerà la formula ma manterrà la formattazione

    Opzione 2 : formatta i dati

    Se si tratta semplicemente di un problema di formato e tutti i dati in quella colonna hanno una lunghezza di tre cifre. Quindi apri i dati in Excel e quindi formatta la colonna contenente i dati con questo formato personalizzato 000

    Opzione 3 – Modifica l’estensione del file in .dif (Formato di interscambio dati)

    Modificare l’estensione del file e utilizzare la procedura guidata di importazione file per controllare i formati. I file con estensione .dif vengono aperti automaticamente da Excel quando si fa doppio clic su.

    Passo dopo passo:

    • Cambia l’estensione del file da .csv a .dif
    • Fare doppio clic sul file per aprirlo in Excel.
    • Verrà avviato il “File Import Wizard”.
    • Impostare “Tipo di file” su “Delimitato” e fare clic sul pulsante “Avanti”.
    • Sotto Delimitatori, selezionare “Virgola” e fare clic sul pulsante “Avanti”.
    • Fare clic su ciascuna colonna dei dati che viene visualizzata e selezionare un “Formato dati colonne”. La colonna con il valore ‘005’ dovrebbe essere formattata come ‘Testo’.
    • Fai clic sul pulsante Fine, il file verrà aperto da Excel con i formati che hai specificato.

    Non usare CSV, usa SYLK.
    http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

    Offre molto più controllo sulla formattazione e Excel non cercherà di indovinare il tipo di campo esaminando i contenuti. Sembra un po ‘complicato, ma puoi farcela usando un sottogruppo molto piccolo.

    Funziona per Microsoft Office 2010, Excel versione 14

    Ho interpretato erroneamente la preferenza dell’OP “per fare qualcosa nel file stesso”. Sto ancora mantenendo questo per coloro che vogliono una soluzione per formattare l’importazione direttamente

    1. Aprire un file vuoto (nuovo) (File -> Nuovo dalla cartella di lavoro)
    2. Aprire l’Importazione guidata (Dati -> Da testo)
    3. Seleziona il tuo file .csv e importa
    4. Nella finestra di dialogo, seleziona “Delimitato” e fai clic su Avanti.
    5. Scegli i delimitatori (deseleziona tutto tranne “virgola”), scegli i tuoi qualificatori di testo (probabilmente {Nessuno}), fai clic su Avanti
    6. Nel campo Anteprima dati seleziona la colonna che vuoi essere testuale. Dovrebbe evidenziare.
    7. Nel campo Formato dati colonna , selezionare “Testo”.
    8. Clicca finito.

    Puoi semplicemente formattare il tuo intervallo come testo.

    Anche qui c’è un bell’articolo sui formati numerici e su come è ansible programmarli.

    In realtà ho scoperto che, almeno a partire da Office 2003, è ansible salvare un foglio di calcolo Excel come file XML. Quindi, posso produrre un file XML e quando faccio doppio clic su di esso, verrà aperto in Excel. Fornisce lo stesso livello di controllo di SYLK, ma la syntax XML è più intuitiva.

    Potrebbe essere utile aggiungere uno spazio non interrotto nella cella. Ad esempio: "firstvalue";"secondvalue";"005 ";"othervalue"

    Costringe Excel a trattarlo come un testo e lo spazio non è visibile. Su Windows puoi aggiungere uno spazio senza interruzioni dando un suggerimento su + 0160. Vedi qui per maggiori informazioni: http://en.wikipedia.org/wiki/Non-breaking_space

    Provato su Excel 2010. Spero che questo possa aiutare le persone che cercano ancora una soluzione adeguata per questo problema.

    Ho riscontrato questo problema durante l’esportazione dei dati CSV dal codice C # e risolto questo problema anteponendo i primi dati zero con il carattere di tabulazione \ t, quindi i dati venivano interpretati come testo anziché numerico in Excel (ma a differenza di anteporre altri caratteri, non sarebbe essere visto).

    Mi è piaciuto l’approccio = “001”, ma questo non avrebbe permesso di reimportare nuovamente i dati CSV esportati nella mia applicazione C # senza rimuovere tutta la formattazione dal file CSV di importazione (preferirei semplicemente ritagliare i dati di importazione) .

    Credo che quando importi il ​​file puoi selezionare il tipo di colonna. Rendilo testo anziché numero. Al momento non ho una copia di fronte a me per controllare.

    Carica csv in oleDB e imponi tutti i tipi di dati dedotti alla stringa

    ho fatto la stessa domanda e poi ho risposto con il codice.

    fondamentalmente quando il file csv è caricato il driver oledb fa delle ipotesi, puoi dirgli quali assunzioni fare.

    Il mio codice forza tutti i tipi di dati in stringhe però … è molto facile cambiare lo schema. per i miei scopi ho usato un xslt per ottenere ti come volevo – ma sto analizzando un’ampia varietà di file.

    So che questa è una vecchia domanda, ma ho una soluzione che non è elencata qui.

    Quando produci il csv aggiungi uno spazio dopo la virgola ma prima del tuo valore , 005, ad esempio , 005,

    Ciò ha funzionato per evitare comunque la formattazione automatica della data in Excel 2007.

    Il metodo di importazione guidata del testo NON funziona quando il file CSV importato presenta interruzioni di riga all’interno di una cella. Questo metodo gestisce questo scenario (almeno con dati delimitati da tabulazioni):

    1. Crea un nuovo file Excel
    2. Ctrl + A per selezionare tutte le celle
    3. Nella casella combinata Formato numero, selezionare Testo
    4. Apri il file delimitato da tabulazioni nell’editor di testo
    5. Seleziona tutto, copia e incolla in Excel

    Questo mi ha fatto impazzire tutto il giorno (dal momento che non è ansible controllare i tipi di colonne di Excel prima di aprire il file CSV), e questo ha funzionato per me, usando VB.NET ed Excel Interop:

      'Convert .csv file to .txt file. FileName = ConvertToText(FileName) Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _ {2, xlTextFormat}, _ {3, xlGeneralFormat}, _ {4, xlGeneralFormat}, _ {5, xlGeneralFormat}, _ {6, xlGeneralFormat}} 'We are using OpenText() in order to specify the column types. mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes) mxlWorkBook = mxlApp.ActiveWorkbook mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet) Private Function ConvertToText(ByVal FileName As String) As String 'Convert the .csv file to a .txt file. 'If the file is a text file, we can specify the column types. 'Otherwise, the Codes are first converted to numbers, which loses trailing zeros. Try Dim MyReader As New StreamReader(FileName) Dim NewFileName As String = FileName.Replace(".CSV", ".TXT") Dim MyWriter As New StreamWriter(NewFileName, False) Dim strLine As String Do While Not MyReader.EndOfStream strLine = MyReader.ReadLine MyWriter.WriteLine(strLine) Loop MyReader.Close() MyReader.Dispose() MyWriter.Close() MyWriter.Dispose() Return NewFileName Catch ex As Exception MsgBox(ex.Message) Return "" End Try End Function 

    Quando si apre un CSV, si ottiene il wizard di importazione del testo. All’ultimo passaggio della procedura guidata, dovresti essere in grado di importare la colonna specifica come testo, mantenendo così il prefisso ’00’. Dopodiché puoi formattare la cella in qualsiasi modo desideri.

    Ho provato con Excel 2007 e sembrava funzionare.

    Bene, Excel non apre mai la procedura guidata per i file CSV. Se lo rinomina in .txt, vedrai la procedura guidata quando esegui un File> Apri in Excel la volta successiva.

    Metti una sola citazione prima del campo. Excel lo tratterà come testo, anche se sembra un numero.

     ...,`005,... 

    EDIT: Questo è sbagliato. Il trucco apostrofo funziona solo quando si inseriscono i dati direttamente in Excel. Quando lo si utilizza in un file CSV, l’apostrofo viene visualizzato nel campo, che non si desidera.

    http://support.microsoft.com/kb/214233

    Basta aggiungere ‘prima del numero nel documento CSV.