Bagaimana cara mengonversi file Excel dengan beberapa lembar menjadi satu set file CSV?

23

Saya memiliki file Excel dengan 20 lembar di atasnya. Apakah ada cara untuk dengan cepat mengkonversi file menjadi 20 file CSV - satu untuk setiap lembar?

Tentu saja saya dapat melakukannya secara manual, tetapi saya harus sering memproses file-file ini, jadi akan lebih baik jika memiliki semacam utilitas baris perintah (atau bahkan switch baris perintah Excel).

AngryHacker
sumber

Jawaban:

17

Metode oleh vembutech jelas merupakan solusi yang lebih halus. Berikut ini adalah makro VBA ringan yang akan mengekspor semua lembar dari satu buku kerja.

Masuk ke folder buku kerja aktif semua nama 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

EDIT:

Untuk komentarnya. Makro asli hanya menggunakan fungsi save as (yang seperti menutup yang asli). Jika Anda ingin melakukan ini sambil membiarkan yang asli terbuka, Anda harus menyalin ke buku kerja baru, simpan, tutup buku kerja yang baru.

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
sumber
Saya baru saja Run-time error '1004': Application-defined or object-defined errormenggunakan Excel untuk Mac.
bryan
8

Alih-alih skrip batch Anda dapat menggunakan konverter XLS ke CSV yang akan memberi Anda antarmuka pengguna yang lebih baik

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

Buka zip file .HTA.

Klik dua kali pada file .HTA

masukkan deskripsi gambar di sini

Temukan folder tempat Anda menyimpan file xls Anda

pilih skema penamaan csv dan klik mulai konversi yang akan mengkonversi semua file xls dengan folder ke file csv

Jika folder Anda memiliki 3 file xls dengan 3 lembar maka itu akan membuat 9 file csv untuk setiap lembar dan Anda dapat mengidentifikasi file csv dengan skema penamaan csv

Semoga ini membantu!

vembutech
sumber
6

Berikut ini adalah skrip python getsheets.py ( mirror ), Anda harus menginstal pandasdan xlrdsebelum menggunakannya.

Jalankan ini:

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

Bagaimana cara kerjanya?

$ 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.

Konversikan ke beberapa xlsx:

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

All Done!

Konversikan ke beberapa csv:

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

All Done!
Scott Ming
sumber
1
Juga: pip3 install openpyxl click ... dan kemudian saya mendapatkan ImportError: cannot import name 'get_column_letter'jalur 513 dari panda excel.py; Saya kira panda saya menginstal entah bagaimana rusak.
Jameson Quinn
3

Makro dari ExtendOffice untuk menyimpan tab di folder Dokumen Anda:

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
sumber