Estou gerando um arquivo CSV (delimitado por vírgulas em vez de tabulações). Provavelmente meus usuários abrirão o arquivo CSV no Excel clicando duas vezes nele. Meus dados podem conter vírgulas e sinais de fala, então estou escapando deles da seguinte maneira.
Reference, Title, Description
1, "My little title", "My description, which may contain ""speech marks"" and commas."
2, "My other little title", "My other description, which may also contain ""speech marks"" and commas."
Pelo que eu sei, essa sempre foi a maneira de fazer isso. Aqui está o meu problema: quando abro este arquivo no Excel 2010, meu escape não é respeitado. Marcas de fala aparecem na folha e a vírgula cria novas colunas.
java
excel
csv
special-characters
Centralscru
fonte
fonte
Abaixo estão as regras se você acredita que é aleatório. Uma função de utilidade pode ser criada com base nessas regras.
Se o valor contiver uma vírgula, nova linha ou aspas duplas, o valor String deve ser retornado entre aspas duplas.
Quaisquer caracteres de aspas duplas no valor devem ser escapados com outra aspa dupla.
Se o valor não contiver uma vírgula, nova linha ou aspas duplas, o valor String deve ser retornado inalterado.
fonte
De acordo com as instruções de Yashu, escrevi a seguinte função (é código PL / SQL, mas deve ser facilmente adaptável a qualquer outra linguagem).
fonte
As aspas simples também funcionam bem, mesmo sem escapar das aspas duplas, pelo menos no Excel 2016:
O Excel colocará isso em 5 colunas (se você escolher a aspa simples como "Qualificador de texto" no assistente "Texto para colunas")
fonte
Mesmo depois de aspas duplas, tive esse problema por alguns dias.
Delimitador de tubo substituído por vírgula, então as coisas funcionaram bem.
fonte