Como você força o Excel a citar todas as colunas de um arquivo CSV?

89

O Excel coloca apenas aspas em torno de determinados campos. Como forço o Excel a salvar um arquivo CSV com aspas em todas as colunas?

Michael Shnitzer
fonte

Respostas:

44

Se você abrir o arquivo XLS no LibreOffice ou OpenOffice, em Salvar como .... e escolher CSV de texto, isso permitirá gerar um arquivo CSV que também inclua aspas como delimitadores. Por exemplo: "Smith", "Pete", "Canadá" "Jones", "Mary", "Inglaterra"

Marque a caixa "Citar todas as células de texto": Exportar para CSV com LibreOffice

Para também citar campos numéricos, realce seu intervalo de células e altere a formatação da célula para "texto" antes de salvar.

Pete
fonte
7
Embora não seja uma resposta para a pergunta específica, é uma solução mais simples do que tentar fazer com que meus clientes usem uma macro!
Duncanmoo
Estou cansado de usar este método todos os dias, é por isso que estou aqui
vladkras
Eu acho que essa é a solução mais fácil e conveniente, já que o OpenOffice é um software portátil. Você não precisa instalar nada ou escrever nenhum código.
Scott Chu
melhor resposta de sempre !!
rajya vardhan
20
Nem uma resposta. A questão é explicitamente sobre MS Excel
vladkras
43

Esta página também tem a solução que sai diretamente da boca do cavalo:

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

Se o link degradar, o tópico a ser pesquisado é:

"Procedimento para exportar um arquivo de texto com delimitadores de vírgula e de cotação no Excel" e / ou "Q291296"

tl; dr: use sua macro

sahmeepee
fonte
10
Algo que pode ser digno de nota é que a macro está usando Inteiro para valores de linha e coluna. Você será atingido com um erro se tentar exportar mais do que 32768 linhas. Alterar os tipos de dados para Long, por exemplo, corrigirá esse problema.
Dan
Bom local (+1). Parece que eles não atualizaram o código desde que foi escrito para versões do Excel com apenas 32768 linhas no máximo.
sahmeepee
9
Tomei a liberdade de criar uma essência com essa macro e algumas correções: gist.github.com/fabriceleal/7803969
fableal
@fableal Ótimo snippet! Merece estar em uma resposta.
Xiankai
O Office 2010 ainda excede o alto número de linhas selecionadas, assim como o @sahmeepee mencionou.
access_granted
18

Encontrei esta solução fácil:

  1. Destaque as células que você deseja adicionar as aspas.
  2. Clique com o botão direito e vá para: Formatar Células → Guia: Número → Categoria: Personalizado
  3. Cole o seguinte no campo Tipo : "''"@"''"(veja detalhes abaixo)
  4. Clique em "ok"

A string que você está colando é: "''"@"''"aspas duplas, aspas simples, aspas simples, aspas duplas, @ símbolo, aspas duplas, aspas simples, aspas simples, aspas duplas.

Editado para o Excel 2010 a partir das informações encontradas aqui .

Michael
fonte
Hmmm .. que me deu '' item '' (duas aspas simples) em vez de "(um aspas duplas) Eu só então fez uma pesquisa e substituição para corrigi-lo..
Argila Nichols
6
O formato deveria ter sido \ "@ \" #
manat
Essa resposta foi na verdade uma resposta perfeita se você estiver usando o LibreOffice - não possui uma opção de "texto" no menu Formatar> Formato numérico, apesar da documentação insistir na opção. Se você clicar com o botão direito do mouse em "Formatar células" no LibreOffice, você receberá uma lista COMPLETA de opções de interpretação de células - em vez das 6 opções um tanto inúteis apresentadas no menu suspenso.
precisa saber é o seguinte
Resposta do @ manat, mas sem as aspas encaracoladas:\"@\"
MSC
12

O PowerShell parece despejar corretamente. então algo como

procure powershell.exe na máquina Windows se você não conhece o powershell.

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

Espero que ajude alguém.

ssaviers
fonte
Por conveniência, Shift + clique com o botão direito do mouse na pasta em que seu CSV está salvo e escolha Abrir janela do PowerShell aqui , o que simplifica o comando para import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. lembre-se de usar aspas simples em torno de nomes de arquivos com espaços ou outros caracteres especiais.
Walf
4

Isso foi o mais fácil para mim: importei a planilha para o Access 2010 e a exportei de lá como um arquivo de texto delimitado. Deu-me as aspas em torno dos meus campos. Leva menos de um minuto para 42k linhas agora que tenho as etapas abaixo.

user326114
fonte
A única desvantagem seria se o próprio campo contivesse aspas duplas.
Access_granted 09/08/19
3

Eu encontrei outro trabalho em torno do qual não envolve a macro VBA, mas que requer o Notepad ++ ou um editor de texto baseado em macro semelhante.

Exporte seu arquivo como texto separado por tabulações e abra o arquivo exportado no Notepad ++. Substitua todas as instâncias do caractere 'tab' pelo texto "," (ou seja, literalmente aspas duplas, vírgula, aspas duplas) e use outra macro para prefixar e sufocar cada linha de texto com aspas duplas.

Um pouco hacky, mas achei mais rápido do que fazer uma macro VBA funcionar.

Blueacid
fonte
1
Se você quiser fazer isso no Notepad ++, você seria melhor usar pesquisa de expressão regular e substituir e, em seguida, você poderia fazer todos os 3 substituem operações (início da linha, guia e fim de linha) em um só lugar
sahmeepee
3

Destaque as células que você deseja adicionar as aspas. Vá para Formatar -> Células -> Copiar / colar personalizado o seguinte no campo Tipo: \ ”@ \” Clique em “ok” Fique feliz por não ter feito tudo manualmente.

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

Steve Coleman
fonte
1
Isso funciona bem para alfa - você precisará de \ "# \" para colunas com valores numéricos.
DropHit
Entre os \ "@ \" e \ "# \" isso funciona. Mas ainda tenho que editar os cabeçalhos no Notepad ++ para as colunas numéricas e, em seguida, substituir todos "" "por". Que dor.
Gary
Ainda não tentei .. mas se você estiver criando um csv, não poderia simplesmente alterar as colunas para texto e usar \ "@ \"
Steve Coleman
2
  1. Destaque as células que você deseja adicionar as aspas.
  2. Clique com o botão direito e vá para: Formatar Células → Guia: Número → Categoria: Personalizado
  3. Cole o seguinte no campo Tipo: "''"@"''"(veja detalhes abaixo)
  4. Clique em "ok"
  5. Abra o arquivo .csv com o Bloco de notas (ou equivalente)
  6. Substitua tudo ' '(aspas simples repetidas) por "(aspas duplas)
  7. Substitua tudo ;
  8. Salvar arquivo .csv revisado
Eric
fonte
1

Se você usar o Notepad ++ para adicionar aspas ao início de cada linha, basta abrir o arquivo csv exportado, colocar o cursor na 1ª linha, 1ª coluna e clicar no menu Editar / Editor de Colunas ... , no campo ' Texto a inserir ', digite " , o início de cada linha terá uma citação e você poderá usar a expressão regular para pesquisar / substituir todas as guias.

Michael Zhang
fonte
0

Para usuários do Windows

  1. Arquivo do Excel "Salvar como" como CSV
  2. Abrir arquivo salvo com a planilha do Mircrosoft Works
  3. "Salvar como" a planilha como CSV
  4. Todos os campos não numéricos agora têm "ao seu redor

Observe que esta não é a mesma citação de teclado que possui uma variedade de avanço e retrocesso.
Portanto, se estiver usando CSV para LOAD na tabela Mysql, recorte e cole no parâmetro ENCLOSED, caso contrário, você se perguntará por que recebe a mensagem#1083 - Field separator argument is not what is expected

Greg
fonte
3
Mircrosoft Works <-? Você tem certeza sobre isso?
Nixda
0

Usei a abordagem abaixo para pegar três colunas no Excel e criar a string na quarta coluna.

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

Meu problema com a "''"@"''"abordagem é que a segunda coluna dos meus dados era um número que a "''"@"''"abordagem não fez nada com os números. Às vezes, a segunda coluna está em branco, mas eu precisava ter certeza de que estava representada no arquivo de texto final.

user415149
fonte
0

Outra maneira, se você tiver acesso ao MS (eu tenho o ver 2007), importe o arquivo e exporte-o como um arquivo de texto. Altere o arquivo .txt para .csv. Observe que todos os campos numéricos não terão aspas duplas, portanto, se você precisar de aspas duplas também, enquanto estiver no Access, altere o campo de um campo numérico para um campo de texto.

reitor
fonte
0

A exportação de seqüências de caracteres separadas por vírgula e entre aspas pode ser feita apenas com o Excel 2016 e o ​​Bloco de Notas, usando uma cópia dos dados, uma fórmula, uma exportação, uma alteração nas propriedades do arquivo, uma substituição no Bloco de Notas, salvando o arquivo exportado e a limpeza. Cada um é um passo simples. Em detalhe:

  1. Copie as colunas a serem exportadas para uma nova planilha intermediária para preservar o original e como backup, com a nova planilha a ser excluída posteriormente para deixar a planilha como estava.

  2. Coloque caracteres que não ocorram, diga '#' ou ';-)' em cada extremidade de uma string na coluna, diga A com a fórmula =concat("#",trim(A1),"#"), colocando a fórmula em todas as linhas de outra coluna.

    • As colunas adjacentes podem ser feitas ao mesmo tempo, mas não cite números para evitar que elas sejam lidas como strings.
    • A guarnição evita espaços à direita que podem desencadear um comportamento de exportação inábil.
    • Strings não devem conter um '"' que possa perturbar a importação.
  3. Copie a (s) nova (s) coluna (s) de volta em A ..., usando o método '123' para não carregar a fórmula.

  4. Exporte a planilha como um arquivo CSV, para inserir vírgulas entre os campos, incluindo números.

  5. Altere as propriedades file.csv para que possam ser abertas com o Bloco de notas.

  6. Use o Bloco de notas para substituir os caracteres arbitrários por '"'.

  7. Embora pareça sensato usar "como caractere arbitrário, ele deve ser colocado em uma célula diferente, digamos '$ A $ 50' e, em seguida, o que aparece na exportação é '" ""', aparentemente outro gatilho inconveniente.

  8. No bloco de notas, o arquivo deve ser salvo, tornando-se um arquivo * .txt a ser importado e o intermediário * .csv excluído.

  9. Com a limpeza da missão extra da planilha realizada.

Talvez as ferramentas de exportação do Access possam um dia ser incorporadas ao Excel. Uma abordagem mais genérica entre os programas que usam recortar e colar seria fazer com que as opções de colagem incluíssem uma maneira de interpretar a estrutura de saída e fornecer delimitadores.

HGB
fonte
0

A resposta de Michael de 21 de agosto de 2014 é realmente útil. No entanto, eu tive que executar uma etapa ou duas adicionais:

  1. Abra o arquivo .csv com o Bloco de notas (ou equivalente)
  2. Substitua tudo '' (aspas simples repetidas) por "(aspas duplas)
  3. Substitua tudo ; (usado como delimitador na versão alemã do Excel) com,
  4. Salvar arquivo .csv revisado
um CVn
fonte
Nenhuma explicação para o voto negativo? Par para o curso, mas como é esperado que os outros aprendam? Você pode achar óbvio o que está errado, Sr. Downvoter, mas pode não ser óbvio para todos. Estamos tentando construir uma comunidade aqui, e você não está ajudando.
Mawg 17/01/19
-1

Esta é a minha receita. Eu odeio ter que fazer isso, mas não tinha maneira melhor. No meu caso, não estou recebendo cotações em nenhum campo. Eu também precisava usar a codificação UTF-8 e; em vez de guias, então foi isso que eu acabei de fazer.

NOTA: devido à ilegibilidade de colocar aspas duplas entre aspas simples e assim por diante, usei propositadamente a "formatação do teclado" para indicar pressionamentos de tecla e caracteres e cadeias literais.

  1. Insira uma nova coluna antes de qualquer outra na planilha do Excel (clique no título da 1ª coluna, a coluna inteira é selecionada, clique com o botão direito do mouse e selecione "inserir").
  2. Selecione o intervalo inteiro de células vazias na nova coluna (elas são selecionadas por padrão). No campo de fórmula, insira o que quiser: por exemplo xxx,. Pressione CTRL+ enterpara preencher a coluna inteira com o mesmo valor.
  3. Salve o arquivo como texto Unicode (* .txt).
  4. Abra o arquivo no Notepad ++.
  5. Pressione CTRL+ fpara abrir Pesquisar / Substituir.
  6. Vá para a guia Substituir.
  7. No "Modo de pesquisa", selecione "Estendido (\ n, \ r, \ t, \ 0, \ x ...)".
  8. No campo "Pesquisar", digite xxxmais uma tabtecla.
  9. No campo "Substituir", insira "(aspas duplas).
  10. Pressione Substituir tudo.
  11. No campo "Pesquisar", tabpressione uma tecla.
  12. No "Substituir", digite ";"(aspas duplas, ponto e vírgula, aspas duplas).
  13. Pressione Substituir tudo.
  14. Você está quase pronto. Para a última aspas duplas, digite \ro campo "Pesquisar" e "\r"(aspas duplas, barra invertida, aspas duplas) no campo "Substituir". Pressione Substituir tudo.
  15. Contanto que você não esteja usando caracteres chineses etc., você pode alterar a codificação para UTF-8 e salvar o arquivo com segurança.
Pere
fonte
-1

Eu já tive esse problema várias vezes. Aqui está a solução mais simples que encontrei.

  1. Salve o arquivo como Excel
  2. Importar o Excel para uma tabela do Access
  3. Exporte a tabela do Access para um arquivo de texto.

O acesso permitirá que você especifique o delimitador de exportação como vírgula e os campos de texto qualificados com aspas. No assistente de exportação, você pode especificar qualquer delimitador ou caractere em torno das seqüências desejadas.

Pode ser necessário criar uma consulta do Access para organizar os campos em uma ordem específica ou ocultar o campo de identificação automática adicionado pelo Access.

Além disso ... depois de exportado para um CSV, NÃO o abra novamente no Excel. Se você quiser ver os resultados, abra-o no bloco de notas. O Excel tem uma tendência a mexer com os dados de um csv .... Acho que foram campos preenchidos com zeros à esquerda se me lembro corretamente.

Gunther
fonte
Isso parece duplicar as informações na resposta do usuário326114.
fixer1234
-1

Veja como usar o aplicativo OpenOffice para obter uma planilha do Excel e criar um arquivo de texto (csv) com aspas em todos os campos de texto.

Abra o arquivo do Excel com o OpenOffice e siga estas etapas:

Arquivo> Salvar como

Forneça um novo nome para o arquivo que você está prestes a criar

Para Tipo de arquivo, escolha "Testar CSV (.csv)"

ative a caixa de seleção "Editar configurações de filtro"

clique em "Salvar"

escolha "Manter formato atual"

O delimitador de campo deve ser uma vírgula:,

O delimitador de texto deve ter aspas: "

marque a caixa "Citar todas as células de texto"

Clique OK"

Isso funcionou para mim!

Mary H
fonte