22

У меня есть файл Excel с 20 листами на нем. Есть ли способ быстро конвертировать файл в 20 CSV-файлов - по одному на каждый лист?

Конечно, я могу сделать это вручную, но мне придется много обрабатывать эти файлы, поэтому было бы здорово иметь какую-нибудь утилиту командной строки (или даже переключатели командной строки Excel).

4 ответа4

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

Надеюсь это поможет!

3

Вот скрипт python getsheets.py (mirror), вы должны установить 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!
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .