Birden fazla sayfa içeren Excel dosyasını bir dizi CSV dosyasına nasıl dönüştürebilirim?


23

Üzerinde 20 sayfalık bir Excel dosyası var. Dosyayı hızlı bir şekilde 20 CSV dosyasına dönüştürmenin bir yolu var mı?

Elbette manuel olarak yapabilirim, ancak bu dosyaları çok işlemden geçirmem gerekecek, bu yüzden bir çeşit komut satırı yardımcı programına (hatta Excel komut satırı anahtarlarına) sahip olmak harika olurdu.

Yanıtlar:


17

Vembutech'in yöntemi kesinlikle daha cilalı bir çözüm. Tüm sayfaları tek bir çalışma kitabından dışa aktaracak hafif bir VBA makrosu.

Aktif çalışma kitapları klasöründe tüm isimler gider 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

DÜZENLE:

Yorum için. Orijinal makro, yalnızca kaydetme işlevini kullanır (orijinali kapatmaya benzer). Orijinali açık bırakırken bunu yapmak istiyorsanız, yeni bir çalışma kitabına kopyalamanız, kaydetmeniz ve yeni çalışma kitabını kapatmanız gerekir.

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

Sadece almak Run-time error '1004': Application-defined or object-defined errorMac için benim Excel.
bryan

8

Toplu komut dosyası yerine, size daha iyi bir kullanıcı arayüzü sağlayacak olan XLS to CSV dönüştürücüyü kullanabilirsiniz.

Doğrudan bağlantı: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.zip

.HTA dosyasını çıkartın.

.HTA dosyasına çift tıklayın.

görüntü tanımını buraya girin

Xls dosyanızın bulunduğu klasörü bulun

csv adlandırma şemasını seçin ve klasördeki tüm xls dosyalarını csv dosyalarına dönüştürecek olan dönüştürme işlemini tıklayın.

Klasörünüz 3 sayfalık 3 xls dosyaya sahipse, her sayfa için 9 csv dosyası oluşturur ve csv dosyasını csv adlandırma şemasıyla tanımlayabilirsiniz.

Bu yardımcı olur umarım!


6

İşte bir python betiği getsheets.py ( mirror ), yüklemelisiniz pandasve xlrdkullanmadan önce.

Bunu çalıştır:

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

Nasıl çalışır?

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

Birkaç xlsx'e dönüştür:

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

All Done!

Birkaç csv'ye dönüştür:

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

All Done!

1
Ayrıca: pip3 install openpyxl click ... ve sonra ImportError: cannot import name 'get_column_letter'513 numaralı pandaların excel.py. Sanırım pandalarımın kurulumu bir şekilde bozuldu.
Jameson Quinn

3

Sekmeleri Belgeler klasörüne kaydetmek için ExtendOffice'den bir makro :

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.