Як конвертувати файл Excel з декількох аркушів у набір файлів CSV?


23

У мене файл Excel з 20 аркушами на ньому. Чи є спосіб швидко перетворити файл у 20 файлів CSV - по одному для кожного аркуша?

Я можу це зробити, звичайно, вручну, але мені доведеться багато обробляти ці файли, тому було б чудово мати якусь утиліту командного рядка (або навіть комутатори командного рядка Excel).

Відповіді:


17

Метод vembutech - це, безумовно, більш відшліфоване рішення. Ось легкий макрос VBA, який би експортував усі аркуші з однієї робочої книги.

Зберігається в папці активних книжок усі імена 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

Редагувати:

Для коментаря. Оригінальний макрос просто використовує функцію збереження як функцію (яка подібно до закриття оригіналу). Якщо ви хочете це зробити, залишаючи оригінал відкритим, потрібно скопіювати його в нову робочу книжку, збережіть, закрийте нову робочу книжку.

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

Я просто переходжу Run-time error '1004': Application-defined or object-defined errorна свій Excel для Mac.
Брайан

8

Замість пакетного сценарію ви можете використовувати конвертер XLS в CSV, який би надав кращий користувальницький інтерфейс

Пряме посилання: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.zip

Розпакуйте файл .HTA.

Двічі клацніть файл .HTA

введіть тут опис зображення

Знайдіть папку, у якій є ваш файл xls

виберіть схему іменування csv та натисніть кнопку "Старт конверсії", яка перетворить усі файли xls з папки у файли csv.

Якщо у вашій папці є 3 xls файли з 3 аркушами, вона створює 9 файлів csv для кожного аркуша, і ви можете ідентифікувати файл csv за допомогою схеми іменування csv.

Сподіваюся, це допомагає!


6

Ось сценарій python getheets.py ( дзеркало ), вам слід встановити його pandasі xlrdперед тим, як його використовувати.

Виконати це:

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

Як це працює?

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

Перетворити в кілька xlsx:

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

All Done!

Перетворити на кілька csv:

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

All Done!

1
Також: pip3 install openpyxl click ... а потім я ImportError: cannot import name 'get_column_letter'переходжу на рядок 513 панд excel.py; Я здогадуюсь, що встановлення панд якимось чином порушено.
Jameson Quinn,

3

Макрос з ExtendOffice для збереження вкладок у папці Документи:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.