Como converter um arquivo Excel com várias planilhas em um conjunto de arquivos CSV?

23

Eu tenho um arquivo do Excel com 20 folhas. Existe uma maneira de converter rapidamente o arquivo em 20 arquivos CSV - um para cada planilha?

É claro que posso fazer isso manualmente, mas terei que processar muito esses arquivos, por isso seria ótimo ter algum tipo de utilitário de linha de comando (ou até opções de linha de comando do Excel).

AngryHacker
fonte

Respostas:

17

O método da vembutech é definitivamente uma solução mais polida. Aqui está uma macro VBA leve que exportaria todas as folhas de uma pasta de trabalho.

Vai na pasta de pastas de trabalho ativa todos os nomes são workbookname_sheetname.csv

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Activate
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Next
End Sub

EDITAR:

Para o comentário. A macro original simplesmente usa a função salvar como (que é como fechar o original). Se você quiser fazer isso, deixando o original aberto, precisará copiar para uma nova pasta de trabalho, salvar e fechar a nova pasta de trabalho.

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Copy
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close False
Next
End Sub
gtwebb
fonte
Acabei de entrar Run-time error '1004': Application-defined or object-defined errorno meu Excel para Mac.
Bryan
8

Em vez de script em lote, você pode usar o conversor XLS para CSV, que ofereceria uma melhor interface do usuário

Link direto: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.zip

Descompacte o arquivo .HTA.

Clique duas vezes no arquivo .HTA

insira a descrição da imagem aqui

Localize a pasta onde você tem o seu arquivo xls

selecione o esquema de nomenclatura csv e clique em Iniciar conversão, que converterá todos os arquivos xls da pasta em arquivos csv.

Se a sua pasta tiver 3 arquivos xls com 3 folhas, criará 9 arquivos csv para cada folha e você poderá identificar o arquivo csv com o esquema de nomenclatura csv

Espero que isto ajude!

vembutech
fonte
6

Aqui está um script python getsheets.py ( mirror ), você deve instalar pandase xlrdantes de usá-lo.

Rode isto:

pip3 install pandas xlrd  # or `pip install pandas xlrd`

Como isso funciona?

$ python3 getsheets.py -h
Usage: getsheets.py [OPTIONS] INPUTFILE

Convert a Excel file with multiple sheets to several file with one sheet.

Examples:

    getsheets filename

    getsheets filename -f csv

Options:
-f, --format [xlsx|csv]  Default xlsx.
-h, --help               Show this message and exit.

Converta em vários xlsx:

$ python3 getsheets.py goods_temp.xlsx
Sheet.xlsx Done!
Sheet1.xlsx Done!

All Done!

Converta em vários csv:

$ python3 getsheets.py goods_temp.xlsx -f csv
Sheet.csv Done!
Sheet1.csv Done!

All Done!
Scott Ming
fonte
1
Também: pip3 install openpyxl click ... e então chego ImportError: cannot import name 'get_column_letter'à linha 513 do pandas excel.py; Eu acho que minha instalação dos pandas está quebrada de alguma forma.
Jameson Quinn
3

Uma macro do ExtendOffice para salvar as guias na sua pasta Documentos:

Sub ExportSheetsToCSV()
    Dim xWs As Worksheet
    Dim xcsvFile As String
    For Each xWs In Application.ActiveWorkbook.Worksheets
        xWs.Copy
        xcsvFile = CurDir & "\" & xWs.Name & ".csv"
        Application.ActiveWorkbook.SaveAs Filename: = xcsvFile, _
        FileFormat: = xlCSV, CreateBackup: = False
        Application.ActiveWorkbook.Saved = True
        Application.ActiveWorkbook.Close
    Next
End Sub
Michel de Ruiter
fonte