Questão Como abrir arquivos CSV delimitados por ponto-e-vírgula na versão dos EUA do Excel


Quando clico duas vezes em um arquivo .csv, ele é aberto no Excel. Os arquivos csv têm colunas delimitadas por ponto e vírgula (não vírgulas, mas também um formato válido).

Usando uma configuração do Windows / Excel em alemão, o arquivo aberto é exibido corretamente, as colunas são separadas onde o ponto-e-vírgula existia no arquivo csv.

Mas quando eu faço o mesmo em uma configuração do Windows / Inglês em inglês (US), apenas uma coluna é importada, mostrando os dados completos, incluindo os pontos e vírgulas na primeira coluna.
(Eu não tenho uma configuração de Inglês disponível para testes, os usuários relataram o comportamento)

Tentei alterar o valor do separador de lista nas configurações regionais do Windows, mas isso não alterou nada.

O que posso fazer para abrir duas vezes esses arquivos CSV em uma configuração em inglês?

EDITAR:
Parece ser a melhor solução para não confiar em arquivos CSV neste caso. Eu esperava que houvesse alguma formatação para arquivos CSV que possibilitasse usá-los internacionalmente.
A melhor solução parece que vou mudar para a criação de arquivos XLS.


85


origem


Você pode recomendar que seus usuários usem LibreOffice Calc - Ele lida com CSVs com separadores arbitrários bem. - naught101


Respostas:


Esses arquivos são distribuídos? baixado? Gerado localmente?

Eu acho que a maneira única de resolver o seu problema sem acesso ao PC do usuário e sem ele ter que fazer algo diferente de "clicar duas vezes" no arquivo é converter os arquivos em .xls antes de diferenciar ou fazer o download ou gerar um .xls (ou outro formato que funciona) em vez de um arquivo .csv. Você pode fazer isso com um script ou manualmente com um Excel em funcionamento, dependendo do número de arquivos e da maneira como eles são gerados.


2



Sim, eu acho que é a melhor maneira de criar diretamente arquivos XLS. Eu esperava que houvesse alguma formatação para arquivos CSV que os tornasse internacionalmente utilizáveis, mas se isso não for possível, os arquivos XLS funcionarão, não importa onde. - Holgerwa
Como esta é a resposta correta, é inútil. - Stevie G


Adicione isto na primeira linha do arquivo CSV:

sep=;

ou

sep=,

Isso substituirá a configuração do sistema ("caractere separador de lista") e o Excel abrirá o arquivo corretamente.


177



+1 fez isso no excel 2010 e funcionou perfeitamente. - N Reed
Existe uma lista de outras configurações? Dizendo Excel para usar, como o separador decimal geralmente vai junto com dizendo para usar; como separador de colunas. - ZweiBlumen
Funciona perfeitamente para o Excel, mas observe que isso pode não ser suportado em outras planilhas ou programas de dados. Pode ser apenas um pequeno problema, simplesmente mostrando uma primeira linha extra com sep= ou sep=; nela, mas alguns programas ou scripts automatizados podem não esperar a primeira linha extra, resultando nos cabeçalhos da coluna ou sep=; própria linha sendo interpretada como dados reais. - Sygmoral
Tenha cuidado com isso. Se você salvar no Excel, ele irá: - Remover a especificação do separador - Salvar com o separador de configuração regional - Bjinse
Pode confirmar fwrite($fileHandle, 'sep=,' . "\r\n"); completamente resolvido o problema com fputcsv em PHP. - h2ooooooo


Você pode usar o Assistente de importação de texto. este não trabalho em um clique duplo-aberto, mas é o melhor que eu posso inventar que não envolve mexendo com configurações de idioma.

No Excel 2003 goto Data -> Import External Data -> Import Data na barra de menu (não posso dizer onde é em 2007, eu não tenho que entregar no momento). Encontre e selecione seu arquivo CSV.

Quando se abre você pega o Text Import Wizard, que permite especificar o (s) delimitador (es) a usar.


25



No Outlook 2007, acesse a guia Dados, selecione sua coluna e clique no botão Texto para Colunas nos conjuntos de Ferramentas de Dados. - Hondalex
Sim, isso é uma solução. Infelizmente, os usuários que precisam examinar os dados não estão dispostos a fazer isso. Eles podem lidar com um "clique duplo aberto", mas não poderão fazer nada mais complicado. Nós tentamos educá-los pelo menos um pouco, mas eles se recusam. - Holgerwa
@Holgerwa - é possível executar os arquivos através de algum tipo de processo de conversão antes de fornecê-los aos usuários? Ou eles precisam permanecer delimitados por ponto-e-vírgula? Outros sugeriram isso, mas deve ser bastante fácil trocar ponto-e-vírgulas por vírgulas usando algum tipo de script (eu aconselharia um simples localizar / substituir porque você não deseja converter as citações internas). - DMA57361


Veja este artigo:
Problemas com a abertura de arquivos CSV com o Excel? O problema da vírgula e do ponto-e-vírgula no Excel devido às configurações regionais para Europa

Que oferece 3 soluções:

  • Altere a extensão de arquivo CSV para TXT (quando você abre um arquivo TXT com o Excel, ele inicia o assistente de importação de arquivo de texto, onde é possível escolher o delimitador)
  • Substitua todos os "," por ";" em seu (s) arquivo (s) CSV
  • Alterar suas configurações regionais e de idioma

Como você alterou apenas o valor do separador de lista nas configurações regionais do Windows, observo que o artigo diz para inserir "." Decimal Symbol e para List Separator.

Se você se sentir confortável com o VBA, consulte:

Abrindo o arquivo CSV delimitado por ponto-e-vírgula com o VBA no Excel 2000
Exportar e importar texto com o Excel


5



Eu concordo, todas as opções válidas, mas infelizmente, não estou em uma situação normal com os usuários desses arquivos CSV. .TXT-import não funciona (veja meu comentário sobre a resposta do DMA57361), substituir os pontos-e-vírgulas por vírgulas não funcionará devido a problemas de separador decimal, e alterar as configurações regionais não funcionará porque eu não tenho acesso ao PCs que são usados. Os usuários irão apenas clicar duas vezes nos arquivos e, se não conseguirem o que esperam, eles se queixarão e se recusarão a ajudar na resolução do problema. - Holgerwa
@Holgerwa: Se você não controla os PCs dos usuários, então não há nada que você possa fazer. Porque minha outra sugestão seria alterar o manipulador para a extensão .csv para ser seu próprio programa, que irá corrigir (mas de forma inteligente) os delimitadores e chamar o Excel. - harrymc
@Holgerwa: Por favor, note minha edição acima sobre configurações regionais. - harrymc


A melhor maneira que tentei é definir as configurações regionais do seu computador conforme abaixo:

  • no "Standard and Formats" escolha "Inglês (Estados Unidos)";
  • nas "Localizações", escolha "Estados Unidos".

Isso funciona para mim, apenas experimente.


3



Na verdade, a questão do OP é o oposto. Deve mudar para uma região europeia para obter vírgula como símbolo decimal e, em seguida, ponto-e-vírgula será o separador de lista. - yosh m


Se não houver outras vírgulas no arquivo, você pode simplesmente localizar / substituir em um editor de texto os pontos-e-vírgulas para transformá-los em vírgulas. Tratar como arquivo csv normal depois disso.


0



Esses arquivos CSV precisam funcionar em diferentes países (configurações regionais) e, em muitas configurações regionais, a vírgula é o separador decimal em vez do ponto. Um arquivo "padrão" com valores separados por vírgula não funcionará. Eu acho que essa é a razão pela qual os ponto-e-vírgulas foram adicionados como um delimitador válido para arquivos CSV. - Holgerwa