2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99

Como obter o Excel para interpretar a vírgula como delimitador padrão em ficheiros CSV?

Eu tenho vários ficheiros .csv. Alguns deles são delimitados por vírgula, outros são delimitados por tabulação (talvez se devam chamar .tsv …)

A extensão csv fica associada ao Excel quando o Excel é instalado. No entanto, se eu abrir um destes ficheiros com excel, tudo é colocado na mesma coluna e a vírgula não é interpretada como um delimitador.

Eu posso em vez de File -> Importar…, seleccionar o ficheiro, e escolher a forma precisa de interpretar o conteúdo (delimitadores, tipos de dados, etc.) Mas a maior parte das vezes eu só quero look at the file através de uma vista de tabela clara. Não o quero processar com o Excel.

Existe alguma forma de conseguir que o Excel interprete automaticamente o delimitador e mostre o ficheiro CSV como uma tabela adequada assim que este é aberto? Preciso disto para poder usar o Excel como um visualizador rápido para tais ficheiros.

Suspeito que deve haver uma forma, caso contrário o Excel não se associaria a ficheiros CSV.

Respostas (9)

100
100
100
2013-12-10 14:38:58 +0000

Se não pretende modificar o formato do ficheiro, e só tem como alvo o Excel, pode usar o seguinte truque do Excel para o ajudar.

Adicione uma nova linha no topo do ficheiro com o texto "sep=," (incluindo aspas) para que o Excel abra o ficheiro com “,” como separador de lista.

É um truque muito fácil para evitar alterar as suas definições regionais do Windows e obter um resultado consistente. Mas é específico para o Excel.

85
85
85
2013-06-11 11:07:17 +0000

Ao abrir ficheiros CSV, o Excel irá utilizar uma configuração regional do sistema chamada List separator para determinar qual o delimitador por defeito a utilizar.

Microsoft Excel irá abrir ficheiros .csv, mas dependendo das configurações regionais do sistema, poderá esperar um ponto e vírgula como separador em vez de uma vírgula, uma vez que em algumas línguas a vírgula é utilizada como separador decimal. (a partir de Wikipedia )


Em Windows* , pode alterar a configuração do List separator no Regional and Language Options como especificado no site Office support website :

Alterar o separador num ficheiro de texto CSV

  1. Clique no menu Iniciar do Windows.
  2. Clique no Painel de Controlo.
  3. Abra a caixa de diálogo Opções Regionais e Linguísticas.
  4. Clique no separador Regional Options (Opções Regionais).
  5. Clique em Customize / Additional settings (Win10).
  6. Digite um novo separador na caixa Lista de separadores.
  7. Clique duas vezes em OK.

Nota : isto só funciona se o símbolo decimal não estiver também designado como vírgula (de acordo com a citação da Wikipedia acima). Se for, o Excel irá não usar vírgula como separador de lista, mesmo que escolhido. Para muitas regiões não Estados Unidos, a vírgula é o símbolo decimal padrão.

Em Mac OS X* , esta configuração parece ser deduzida da configuração decimal separator (no painel Language & Region de System Preferences, vá para Advanced). Se o Decimal Separator for um ponto, então o separador CSV padrão será uma vírgula, mas se o Decimal Separator for uma vírgula, então o separador CSV padrão será um ponto e vírgula.

Como você mesmo disse no comentário, há uma alternativa para os usuários de Mac olharem rapidamente para esses arquivos CSV. É um plugin para Quick Look chamado quicklook-csv que trata da detecção do separador.

11
11
11
2017-06-02 12:27:39 +0000

Não precisa das citações à volta do sep=, - desde que seja a primeira linha do ficheiro, pelo menos com o Excel 2016.

Descobri que se o ficheiro estiver delimitado por tabulação, o sep=\t funciona bem, com e sem as citações.

5
5
5
2018-07-21 11:55:56 +0000
1
1
1
2019-09-23 12:03:13 +0000

Eu tinha um arquivo .csv com separador ; e configurações regionais definidas para Listar separador ;. No entanto, o Excel ainda não analisava as colunas.

Revelou-se ser um problema de codificação. Os ficheiros foram exportados do SQL Server Management Studio 2005 e passaram a ser codificados em UCS-2 LE BOM. Usando o Notepad ++, mudei a codificação para UTF-8 e tudo começou a funcionar.

1
1
1
2018-06-25 14:46:53 +0000

Quando o separador nos cenários regionais não é uma vírgula mas um ponto e vírgula (separador holandês), renomeie o ficheiro CSV para um ficheiro TXT. Clique com o botão direito do rato no ficheiro TXT e seleccione “Abrir com” e seleccione “Excel”. No Excel selecione a primeira coluna, selecione os dados na fita e separe o texto para as colunas.

OU

Instale o LibreOffice e abra o arquivo CSV com LibreOffice Calc.

0
0
0
2018-01-22 13:50:36 +0000

Para neerlandês tive um problema que o Excel 2008 no Windows 7 não aderisse ao RFC4180:

“Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in doublequotes”

Um ficheiro separado correctamente por vírgulas tinha campos com uma vírgula (separador decimal neerlandês) entre aspas duplas. No locale holandês o separador decimal é , e o separador de lista é ; pelo que o Excel não conseguiu ler um ficheiro com , utilizado para ambos (nem mesmo depois de alterar explicitamente o separador de lista para , no Painel de Controlo).

A entrada é parecida com:

"06-07-2017 17:03:18"," ********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

A solução foi dada por @user280725:

Utilizar bloco de notas para inserir como primeira linha:

sep=,

(Isto significa que a nota do utilizador @zakinster na sua solução já não precisa de ser aplicada. )


Interessante: com o ficheiro csv ainda carregado, se agora definir o locale para US English no Painel de Controlo e guardar o ficheiro, este terá sido convertido para US English (vírgula como separador de lista e ponto como separador decimal).

0
0
0
2017-06-12 17:22:25 +0000

Certifique-se de inspeccionar o ficheiro CSV num editor simples como o Notepad para verificar se está devidamente formatado.

Adicionei esta resposta depois de resolver um bug estúpido em que os ficheiros CSV que criei com o VB não foram abertos com colunas separadas no Excel. Descobri que a forma como tinha escrito as linhas envolvia cada linha com aspas. O Excel escondeu as aspas e mostrou toda a linha na coluna A, fazendo parecer que ignorava os meus separadores de vírgulas.

0
0
0
2017-07-31 06:30:51 +0000

a melhor maneira será guardá-lo num ficheiro de texto com extensão csv

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name As String

    Dim pathfile As String

    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub