Come evitare le doppie virgolette quando si salva il file Excel come Unicode?


9

Ho un file Excel con contenuto Unicode di cui alcune celle contengono testo tra virgolette doppie, ad esempio "text".

Quando salvo il file Excel in un file di testo in formato Unicode, ad esempio il testo che contiene la virgoletta doppia viene salvato come tre virgolette doppie """text""".

Ci sono alcuni posti in cui ho persino un testo che contiene una virgola (,). Ad esempio, text,che viene convertito "text,"nel file Unicode. Sta aggiungendo doppie virgolette al testo, che credo contenga caratteri speciali.

Come posso evitarlo?

Risposte:


7

Questo è un comportamento standard (e simile al modo in cui vengono salvati i file CSV). Vedere RFC 4180 - Formato comune e tipo MIME per i file CSV (Comma-Separated Values) :

Se le virgolette doppie vengono utilizzate per racchiudere i campi, è necessario evitare una virgoletta doppia che appare all'interno di un campo precedendola con un'altra virgoletta doppia.

Come si applica al tuo caso?

  • Ciò significa che "Text" devono essere salvate come """Text""", le virgolette esterne che delimitano il campo e le altre due virgolette vengono utilizzate per sfuggire alle virgolette effettive utilizzate per il campo di testo. Altrimenti, "Text"verrebbe semplicemente analizzato come Texte si perderebbero le virgolette quando si riapre il file.

  • Excel sceglie anche di citare Text,, poiché la virgola viene utilizzata come delimitatore nei file separati da virgola e non racchiuderla tra virgolette significherebbe che text,viene analizzata come due campi quando si riapre il file.

Se non li desideri nel tuo output, prendi in considerazione l'apertura dei file risultanti in un editor di testo e la rimozione di tutte le virgolette con una semplice ricerca e sostituzione.


2
Intendi che non esiste altro modo per risolvere il problema se non quello di sostituirli nell'editor di testo.
karthik,

Non proprio, dal momento che Excel deve farlo per motivi di compatibilità. Forse potrebbe essere possibile trovare una macro che esegua un'esportazione personalizzata, ma non sono un esperto in questo.
slhck,

Ok grazie forse cercherò di sostituirlo nel lato di codifica.
karthik,

@slhck: sto affrontando un problema durante il salvataggio di Unicode come CSV nel 2010 superuser.com/q/1210099/234380
NJMR

3

Ho avuto anche questo problema. Poi, ho notato che stavo trascurando l' opzione Save as type: " Formatted Text (Space delimited) ". È inoltre necessario specificare la. estensione txt , o sarà predefinito con un'estensione .prn. Ad esempio, nomefile.txt anziché solo nomefile. Provatelo . Funziona .


Sarà delimitato da spazi anziché delimitati da tabulazioni e le colonne sembrano avere una larghezza limitata a circa 8 caratteri per impostazione predefinita.
Josiah Yoder,

1

Il salvataggio in Unicode sembrava aggiungere le virgolette anche quando non c'erano virgolette nella mia stringa. Ecco come l'ho aggirato:

Trova una stringa che non è nel tuo file (ho usato 'xxx') Prima di esportare, Trova e sostituisci tutte le virgolette con 'xxx' Esporta il tuo file in txt o csv Apri i file txt e Trova e sostituisci tutte le virgolette con nulla Trova e sostituisci Tutto "xxx" con virgolette


0

Basta salvare facilmente il file come spazio delimited.prn in Excel e quindi rinominarlo in .txt. L'ho usato per una crisi di 18000 file. ;)

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.