Làm cách nào để chuyển đổi tệp Excel có nhiều trang tính thành một tập hợp các tệp CSV?


23

Tôi có một tệp Excel với 20 tờ trên đó. Có cách nào để nhanh chóng chuyển đổi tệp thành 20 tệp CSV - một tệp cho mỗi trang không?

Tôi có thể làm điều đó bằng tay tất nhiên, nhưng tôi sẽ phải xử lý các tệp này rất nhiều, vì vậy sẽ rất tuyệt nếu có một loại tiện ích dòng lệnh (hoặc thậm chí là chuyển đổi dòng lệnh Excel).

Câu trả lời:


17

Phương pháp của vembutech chắc chắn là một giải pháp bóng bẩy hơn. Đây là một macro VBA nhẹ sẽ xuất tất cả các trang tính từ một sổ làm việc.

Đi vào thư mục sổ làm việc đang hoạt động, tất cả các tên đều 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

CHỈNH SỬA:

Đối với các bình luận. Macro ban đầu chỉ đơn giản sử dụng chức năng lưu dưới dạng (giống như đóng bản gốc). Nếu bạn muốn làm điều này trong khi để mở bản gốc, bạn cần sao chép vào một sổ làm việc mới, lưu, đóng sổ làm việc mới.

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

Tôi chỉ nhận được Run-time error '1004': Application-defined or object-defined errortrên Excel cho Mac.
bryan

8

Thay vì tập lệnh bó, bạn có thể sử dụng trình chuyển đổi XLS sang CSV để cung cấp cho bạn giao diện người dùng tốt hơn

Liên kết trực tiếp: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.zip

Giải nén tệp .HTA.

Nhấp đúp vào tệp .HTA

nhập mô tả hình ảnh ở đây

Xác định vị trí thư mục nơi bạn có tệp xls của bạn

chọn lược đồ đặt tên csv và nhấp vào bắt đầu chuyển đổi sẽ chuyển đổi tất cả các tệp xls trong thư mục thành tệp csv

Nếu thư mục của bạn có 3 tệp xls với 3 trang tính thì nó sẽ tạo 9 tệp csv cho mỗi trang và bạn có thể xác định tệp csv bằng lược đồ đặt tên csv

Hi vọng điêu nay co ich!


6

Đây là một kịch bản python getheets.py ( nhân bản ), bạn nên cài đặt pandasxlrdtrước khi sử dụng nó.

Chạy này:

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

Nó làm việc như thế nào?

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

Chuyển đổi sang một vài xlsx:

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

All Done!

Chuyển đổi sang một số csv:

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

All Done!

1
Ngoài ra: pip3 install openpyxl click ... và sau đó tôi nhận được ImportError: cannot import name 'get_column_letter'dòng 513 của gấu trúc excel.py; Tôi đoán cài đặt gấu trúc của tôi bị hỏng bằng cách nào đó.
Jameson Quinn

3

Một macro từ ExtendScript để lưu các tab trong thư mục Tài liệu của bạn:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.