Come costringi Excel a citare tutte le colonne di un file CSV?


89

Excel inserisce solo virgolette attorno a determinati campi, come posso forzare Excel a salvare un file CSV con virgolette attorno a ogni colonna?

Risposte:


44

Se si apre il file XLS in LibreOffice o OpenOffice, quindi Salva con nome .... e si sceglie Text CSV, si genera un file CSV che include anche virgolette come delimitatori. Ad esempio: "Smith", "Pete", "Canada" "Jones", "Mary", "Inghilterra"

Seleziona la casella "Cita tutte le celle di testo": Esporta in CSV con LibreOffice

Per citare anche i campi numerici, evidenzia l'intervallo di celle e modifica la formattazione della cella in "testo" prima di salvare.


7
Sebbene non sia una risposta alla domanda specifica, è una soluzione più semplice rispetto al tentativo di convincere i miei clienti a utilizzare una macro!
Duncanmoo,

Sono stanco di usare questo metodo ogni giorno, ecco perché sono qui
vladkras il

Penso che questa sia la soluzione più semplice e conveniente poiché OpenOffice è un software portatile. Non è necessario installare nulla o scrivere codici.
Scott Chu,

la migliore risposta di sempre !!
rajya vardhan,

20
Nessuna risposta. La domanda riguarda esplicitamente MS Excel
vladkras,

43

Questa pagina ha anche la soluzione che arriva direttamente dalla bocca del cavallo:

http://support.microsoft.com/kb/291296/en-us

Se il collegamento peggiora, l'argomento da cercare è:

"Procedura per esportare un file di testo con delimitatori di virgole e virgolette in Excel" e / o "Q291296"

tl; dr: usa la loro macro


10
Qualcosa che può essere degno di nota è che la macro sta usando Integer per i valori di riga e colonna. Verrai colpito con un errore se provi a esportare più di 32768 righe. La modifica dei tipi di dati in Long, ad esempio, risolverà quel problema.
Dan,

Buon posto (+1). Sembra che non abbiano aggiornato il codice da quando è stato scritto per le versioni di Excel con solo 32768 righe al massimo.
Sahmeepee,

9
Mi sono preso la libertà di creare una sintesi con questa macro e un paio di correzioni: gist.github.com/fabriceleal/7803969
fableal

@fableal Grande frammento! Merita di essere in una risposta.
Xiankai,

Office 2010, trabocca ancora su un numero elevato di righe selezionate, come menzionato da @sahmeepee.
access_granted

18

Ho trovato questa soluzione semplice:

  1. Evidenzia le celle che desideri aggiungere tra virgolette.
  2. Fare clic con il tasto destro e selezionare: Formato celle → Scheda: Numero → Categoria: Personalizzata
  3. Incolla quanto segue nel campo Tipo : "''"@"''"(vedi dettagli sotto)
  4. Fai clic su "OK"

La stringa che stai incollando è "''"@"''"che è doppia virgoletta, virgoletta singola, virgoletta singola, virgoletta doppia, simbolo @, virgoletta doppia, virgoletta singola, virgoletta singola, virgoletta doppia.

Modificato per Excel 2010 dalle informazioni trovate qui .


Hmmm .. che mi ha dato '' ITEM '' (due virgolette singole) anziché "(una virgoletta doppia). Proprio in quel momento ho fatto una ricerca e sostituisco per risolverlo.
Clay Nichols

6
Il formato avrebbe dovuto essere \ "@ \"
manat

Questa risposta è stata in realtà una risposta perfetta se stai usando LibreOffice - manca totalmente un'opzione di "testo" nel menu Formato> Formato numero, nonostante la loro documentazione insista che l'opzione sia lì. Se fai clic con il pulsante destro del mouse su "Formatta celle" in LibreOffice, ti verrà fornito un elenco COMPLETO di opzioni di interpretazione delle celle, anziché le 6 opzioni alquanto inutili presentate nel menu a discesa.
1owk3y

La risposta di manat, ma senza le virgolette:\"@\"
MSC

12

Powershell sembra scaricare correttamente. quindi qualcosa del genere

cercare powershell.exe sul computer Windows se non si conosce powershell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

Spero che aiuti qualcuno.


Per comodità, Maiusc + clic con il pulsante destro del mouse nella cartella in cui è stato salvato il CSV e scegliere Apri finestra PowerShell qui , che semplifica il comando import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. ricordati di usare virgolette singole attorno ai nomi di file con spazi o altri caratteri speciali.
Walf

4

Questo è stato il più semplice per me: ho importato il foglio di calcolo in Access 2010 e l'ho esportato da lì come file di testo delimitato. Mi ha dato le virgolette attorno ai miei campi. Richiede meno di un minuto per 42k righe ora che ho i passaggi verso il basso.


L'unico inconveniente sarebbe se il campo stesso contiene una doppia virgoletta.
access_granted

3

Ho trovato un altro lavoro in giro che non coinvolge la macro VBA, ma che richiede Notepad ++ o un editor di testo simile basato su macro.

Esporta il tuo file come testo separato da tabulazioni, quindi apri il file esportato in Notepad ++. Sostituisci tutte le istanze del carattere "tab" con il testo "," (ovvero letteralmente virgolette doppie, virgola, virgolette doppie) e quindi utilizza un'altra macro per aggiungere il prefisso e aggiungere un suffisso a ciascuna riga di testo con una virgoletta doppia.

Un po 'confuso ma l'ho trovato più veloce che far funzionare una macro VBA.


1
Se volessi farlo in Notepad ++, sarebbe meglio usare la ricerca e la sostituzione di espressioni regolari e quindi potresti fare tutte e 3 le operazioni di sostituzione (inizio della riga, tabulazione e fine della riga) in un unico posto
sahmeepee

3

Evidenzia le celle che desideri aggiungere tra virgolette. Vai a Formato -> Celle -> Copia personalizzata / Incolla quanto segue nel campo Tipo: \ "@ \" Fai clic su "OK". Sii felice di non averlo fatto tutto a mano.

Da: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/


1
Funziona bene con l'alfa: avrai bisogno di \ "# \" per colonne con valori numerici.
DropHit

Tra \ "@ \" e \ "# \" funziona. Ma devo ancora modificare le intestazioni in Notepad ++ per le colonne numeriche e quindi sostituire tutto "" "con". Che dolore.
Gary,

Non l'ho provato .. ma se stai creando un csv non puoi semplicemente cambiare le colonne in testo e usare \ "@ \"
Steve Coleman il

2
  1. Evidenzia le celle che desideri aggiungere tra virgolette.
  2. Fare clic con il tasto destro e selezionare: Formato celle → Scheda: Numero → Categoria: Personalizzata
  3. Incolla quanto segue nel campo Tipo: "''"@"''"(vedi dettagli sotto)
  4. Fai clic su "OK"
  5. Apri il file .csv con Blocco note (o equivalente)
  6. Sostituisci tutto ' '(virgolette singole ripetute) con "( virgolette doppie)
  7. Sostituisci tutto ;
  8. Salva il file .csv rivisto

1

Se usi Notepad ++ per aggiungere virgolette all'inizio di ogni riga, apri semplicemente il file csv esportato, posiziona il cursore sulla prima riga, prima colonna, quindi fai clic sul menu Modifica / Editor colonne ... , nel campo " Testo da inserire ", inserisci " , quindi l'inizio di ogni riga avrà un preventivo, quindi puoi utilizzare l'espressione regolare per cercare / sostituire tutte le schede.


0

Per utenti Windows

  1. "Salva come" file Excel come CSV
  2. Apri il file salvato con il foglio di calcolo di Mircrosoft Works
  3. "Salva come" il foglio di lavoro come CSV
  4. Tutti i campi non numerici ora hanno "attorno a loro

Nota che questa non è la stessa citazione della tastiera che ha una varietà avanti e indietro.
Quindi, se usi CSV per CARICARE nella tabella Mysql, taglia e incolla il parametro ENCLOSED, altrimenti ti chiederai perché ricevi il messaggio#1083 - Field separator argument is not what is expected


3
Mircrosoft Works <-? Sei sicuro?
nixda,

0

Ho usato l'approccio seguente per prendere tre colonne in Excel e creare la stringa nella quarta colonna.

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Il mio problema con l' "''"@"''"approccio è che la seconda colonna dei miei dati era un numero che l' "''"@"''"approccio non ha fatto nulla con i numeri. A volte la seconda colonna è vuota ma avevo bisogno di assicurarmi che fosse rappresentata nel file di testo finale.


0

Un altro modo se si dispone dell'accesso MS (I ver ver 2007) importare il file quindi esportarlo come file di testo. Quindi modificare .txt in .csv. Nota che tutti i campi numerici non avranno virgolette doppie, quindi se hai bisogno di virgolette doppie anche quando sei in Access, cambia il campo da un campo numerico a un campo di testo.


0

L'esportazione di stringhe separate da virgole e virgolette può essere eseguita solo con Excel 2016 e Blocco note, utilizzando una copia dei dati, una formula, un'esportazione, una modifica delle proprietà del file, una sostituzione in Blocco note, il salvataggio del file esportato e la pulizia. Ognuno è un semplice passo. In dettaglio:

  1. Copia le colonne da esportare in un nuovo foglio intermedio per conservare l'originale e come backup, con il nuovo foglio da eliminare in seguito per lasciare il foglio di calcolo così com'era.

  2. Inserisci i caratteri altrimenti non ricorrenti, pronuncia '#' o ';-)' ad ogni estremità di una stringa nella colonna, pronuncia A con la formula =concat("#",trim(A1),"#"), inserendo la formula su tutte le righe di un'altra colonna.

    • Le colonne adiacenti possono essere eseguite contemporaneamente, ma non citare i numeri per evitare di leggerli come stringhe.
    • Il rivestimento evita gli spazi finali che possono innescare comportamenti di esportazione non abili.
    • Le stringhe non devono contenere un "" 'che potrebbe perturbare l'importazione.
  3. Copia le nuove colonne su A ..., usando il metodo "123" in modo da non portare la formula.

  4. Esporta il foglio come file CSV, per inserire le virgole tra i campi inclusi i numeri.

  5. Modificare le proprietà file.csv in modo che possa essere aperto con Blocco note.

  6. Utilizzare Blocco note per sostituire i caratteri arbitrari con "" ".

  7. Mentre sembrerebbe ragionevole usare "come carattere arbitrario, deve essere messo in una cella diversa, dire '$ A $ 50', e quindi ciò che appare all'esportazione è '" ""', apparentemente un altro innesco scomodo.

  8. Nel blocco note il file deve essere salvato, diventando un file * .txt da importare e l'intermedio * .csv eliminato.

  9. Con la pulizia della missione foglio di calcolo extra compiuta.

Forse gli strumenti di esportazione di Access possono un giorno essere incorporati in Excel. Un approccio più generico tra quei programmi che usano taglia e incolla sarebbe quello di avere le opzioni incolla che includono una scelta di modi per interpretare la struttura di output e fornire delimitatori.


0

La risposta di Michael del 21 agosto 2014 è davvero utile. Tuttavia, ho dovuto eseguire uno o due passaggi aggiuntivi:

  1. Apri il file .csv con Blocco note (o equivalente)
  2. Sostituisci tutto '' (virgolette singole ripetute) con "(virgolette doppie)
  3. Sostituisci tutto ; (utilizzato come delimitatore nella versione tedesca di Excel) con,
  4. Salva il file .csv rivisto

Nessuna spiegazione per il downbote? Par per il corso, ma come dovrebbero imparare gli altri? SI potrebbe pensare che ovvio ciò che è sbagliato, signor Downvoter, ma potrebbe non essere evidente a tutti. Stiamo cercando di creare una comunità qui e tu non stai aiutando.
Mawg,

-1

Questa è la mia ricetta Odio doverlo fare ma non avevo modo migliore. Nel mio caso, non ricevo virgolette in nessun campo. Avevo anche bisogno di usare la codifica UTF-8 e; invece delle schede, quindi questo è quello che ho finito di fare.

NOTA: a causa dell'ilegabilità di mettere virgolette doppie racchiuse tra virgolette singole e così via, ho usato volutamente la "formattazione della tastiera" per indicare sia i tasti che i caratteri e le stringhe letterali.

  1. Inserisci una nuova colonna prima di qualsiasi altra nel tuo foglio di calcolo Excel (fai clic sul titolo della 1a colonna, l'intera colonna viene selezionata, fai clic con il pulsante destro del mouse, seleziona "inserisci").
  2. Seleziona l'intero intervallo di celle vuote dalla nuova colonna (sono selezionate per impostazione predefinita). Sul campo di formula, inserire quello che vuoi: per esempio, xxx. Premi CTRL+ enterper riempire l'intera colonna con lo stesso valore.
  3. Salvare il file come testo Unicode (* .txt).
  4. Apri il file in Notepad ++.
  5. Premi CTRL+ fper aprire Cerca / Sostituisci.
  6. Vai alla scheda Sostituisci.
  7. In "Modalità di ricerca" selezionare "Esteso (\ n, \ r, \ t, \ 0, \ x ...)".
  8. Nel campo "Cerca", inserisci xxxpiù un tabtasto.
  9. Nel campo "Sostituisci", inserisci "(una doppia virgoletta).
  10. Premere Sostituisci tutto.
  11. Nel campo "Cerca", inserisci una tabsequenza di tasti.
  12. In "Sostituisci", inserisci ";"(virgolette doppie, punto e virgola, virgolette doppie).
  13. Premere Sostituisci tutto.
  14. Hai quasi finito. Per l'ultima doppia virgoletta, inserisci \rnel campo "Cerca" e "\r"(virgolette doppie, barra rovesciata, virgolette doppie) in "Sostituisci". Premere Sostituisci tutto.
  15. Finché non si utilizza il carattere cinese, ecc., È possibile modificare la codifica in UTF-8 e salvare il file in modo sicuro.

-1

Ho riscontrato questo problema molte volte. Ecco la soluzione più semplice che ho trovato.

  1. Salva il file come Excel
  2. Importa Excel in una tabella di Access
  3. Esporta la tabella da Access in un file di testo.

L'accesso ti consentirà di specificare il delimitatore di esportazione come una virgola e i campi di testo con virgolette. Nella procedura guidata di esportazione, è possibile specificare qualsiasi delimitatore o carattere attorno alle stringhe desiderate.

Potrebbe essere necessario creare una query di Access per disporre i campi in un ordine particolare o nascondere il campo ID automatico aggiunto da Access.

Inoltre ... una volta esportato in un CSV, NON aprirlo di nuovo in Excel. Se vuoi guardare i risultati, aprilo nel blocco note. Excel ha la tendenza a pasticciare con i dati di un csv .... Penso che fossero campi riempiti con zeri iniziali se ricordo correttamente.


Ciò sembra duplicare le informazioni nella risposta di user326114.
fixer1234

-1

Ecco come utilizzare l'app OpenOffice per prendere un foglio di calcolo Excel e creare un file di testo (csv) con virgolette attorno ad ogni campo di testo.

Apri il file Excel con OpenOffice, quindi segui questi passaggi:

File> Salva con nome

Fornisci un nuovo nome per il file che stai per creare

Per Tipo di file, selezionare "Test CSV (.csv)"

attiva la casella di controllo "Modifica impostazioni filtro"

fai clic su "Salva"

scegli "Mantieni formato corrente"

Il delimitatore di campo deve essere una virgola:,

Il delimitatore di testo deve contenere le virgolette: "

seleziona la casella "Cita tutte le celle di testo"

fai clic su "OK"

Questo ha funzionato per me!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.