Como converter arquivos Excel com múltiplas planilhas para um conjunto de arquivos CSV?

22

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

Eu posso fazer isso manualmente, é claro, mas eu terei que processar muito esses arquivos, então seria ótimo ter algum tipo de utilitário de linha de comando (ou mesmo comutadores de linha de comando do Excel).

    
por AngryHacker 17.11.2014 / 19:50

4 respostas

17

O método de vembutech é definitivamente uma solução mais polida. Aqui está uma macro VBA leve que exportaria todas as planilhas 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 enquanto deixa o original aberto, você precisa copiar para uma nova pasta de trabalho, salvar, 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
    
por 18.11.2014 / 01:35
8

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

Link direto: link

Descompacte o arquivo .HTA.

Clique duas vezes no arquivo .HTA

Localize a pasta onde você tem seu arquivo xls

selecione o esquema de nomenclatura csv e clique em start conversion, que converterá todos os arquivos xls na pasta para arquivos csv

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

Espero que isso ajude!

    
por 17.11.2014 / 20:42
3

Uma macro de ExtendOffice para salvar as guias na 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
    
por 30.06.2016 / 00:39
2

Aqui está um script python getsheets.py ( mirror ), você deve instalar pandas e xlrd antes de usá-lo.

Execute 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 para 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!
    
por 20.11.2016 / 12:11