Domanda

Produco un rapporto come file CSV. Quando provo ad aprire il file in Excel, fa un presupposto sul 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 sovrascrivere questo e visualizzare 005?

Preferirei fare qualcosa per il file stesso, in modo che l'utente possa semplicemente fare doppio clic sul file CSV per aprirlo.

Uso Excel 2003.

È stato utile?

Soluzione

Non esiste un modo semplice per controllare la formattazione che Excel applica quando si apre un file .csv. Tuttavia, di seguito sono elencati tre approcci che potrebbero essere utili.

La mia preferenza è la prima opzione.

Opzione 1 & # 8211; Modifica i dati nel file

Puoi modificare i dati nel file .csv come segue ..., = & # 8221; 005 & # 8221; , ... Questo verrà visualizzato in Excel come ..., 005 , ...

Excel avrà conservato i dati come formula, ma copiando la colonna e usando i valori speciali incolla si eliminerà la formula ma si manterrà la formattazione

Opzione 2 & # 8211; 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 formatta la colonna contenente i dati con questo formato personalizzato 000

Opzione 3 & # 8211; Cambia l'estensione del file in .dif (Formato di scambio dati)

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

Step by step:

  • Cambia l'estensione del file da .csv a .dif
  • Fai doppio clic sul file per aprirlo in Excel.
  • Verrà avviata la "Procedura guidata di importazione file".
  • Imposta "Tipo file" su "Delimitato" e fai clic sul pulsante "Avanti".
  • In Delimitatori, selezionare "Virgola" e fare clic sul pulsante "Avanti".
  • Fare clic su ciascuna colonna dei dati visualizzati e selezionare un "Formato dati colonna". La colonna con il valore "005" deve essere formattata come "Testo".
  • Fai clic sul pulsante Fine, il file verrà aperto da Excel con i formati che hai specificato.

Altri suggerimenti

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

Offre molto più controllo sulla formattazione ed Excel non tenterà di indovinare il tipo di campo esaminando il contenuto. Sembra un po 'complicato, ma puoi cavartela usando un sottoinsieme molto piccolo.

Funziona con Microsoft Office 2010, Excel versione 14

Ho letto male le preferenze dell'OP " di fare qualcosa sul file stesso. " Lo sto ancora mantenendo per coloro che desiderano una soluzione per formattare direttamente l'importazione

  1. Apri un file (nuovo) vuoto (File - > Nuovo dalla cartella di lavoro)
  2. Apri l'Importazione guidata (Dati - > da testo)
  3. Seleziona il tuo file .csv e importa
  4. Nella finestra di dialogo, selezionare "Delimitato" e fare clic su Avanti.
  5. Scegli i delimitatori (deseleziona tutto tranne "virgola"), scegli i qualificatori di testo (probabilmente {None}), fai clic su Avanti
  6. Nel campo Anteprima dati seleziona la colonna che vuoi inserire come testo. Dovrebbe evidenziare.
  7. Nel campo Formato dati colonna , seleziona "Testo".
  8. Fai clic su Fine.

Puoi semplicemente formattare il tuo intervallo come testo.

Anche qui è un bell'articolo sui formati numerici e su come programmarli.

In realtà ho scoperto che, almeno a partire da Office 2003, è possibile salvare un foglio di calcolo Excel come file XML. Pertanto, 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 sintassi XML è più intuitiva.

L'aggiunta di uno spazio non interrotto nella cella potrebbe essere d'aiuto. Per esempio: " FirstValue " ;; " SecondValue " ;; " 005 & nbsp; " ;; " othervalue "

Obbliga Excel a trattarlo come un testo e lo spazio non è visibile. Su Windows è possibile aggiungere uno spazio non-break premendo alt + 0160. Vedi qui per maggiori informazioni: http://en.wikipedia.org/wiki/Non-breaking_space

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

Ho riscontrato questo problema durante l'esportazione dei dati CSV dal codice C # e l'ho risolto anteponendo i dati zero iniziali con il carattere di tabulazione \ t, quindi i dati sono stati interpretati come testo anziché numerici in Excel (ma diversamente da anteporre altri caratteri, non sarebbe stato visto).

Mi è piaciuto il = " 001 " approccio, ma ciò non consentirebbe di reimportare nuovamente i dati CSV esportati nella mia applicazione C # senza rimuovere tutta questa formattazione dal file CSV di importazione (invece taglierò i dati di importazione).

Credo che quando importi il ??file puoi selezionare il Tipo di colonna. Rendi Testo anziché Numero. Al momento non ho una copia davanti a me da controllare.

Carica csv in oleDB e forza tutto tipi di dati inferiti alla stringa

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

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

Il mio codice forza comunque tutti i tipi di dati in stringa ... è molto facile cambiare lo schema. per i miei scopi ho usato un xslt per ottenere come volevo, ma sto analizzando una grande 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, ad es. , 005, .

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

Il metodo Importazione guidata 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 nuovo file Excel
  2. Ctrl + A per selezionare tutte le celle
  3. Nella casella combinata Formato numero, selezionare Testo
  4. Apri 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 in effetti non puoi controllare i tipi di colonna 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

All'apertura di un CSV, viene visualizzata la procedura guidata di importazione del testo. Nell'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 nel modo che desideri.

Ho provato con Excel 2007 e sembrava funzionare.

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

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

...,`005,...

MODIFICA: Questo è sbagliato. L'apostrofo funziona solo quando si inseriscono dati direttamente in Excel. Quando lo usi in un file CSV, l'apostrofo appare nel campo, che non vuoi.

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

Basta aggiungere "prima del numero nel documento CSV.

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