Вопрос по python, excel – Как сохранить лист Excel как CSV

13

Я хочу написать сценарий Python, который читает в электронной таблице Excel и сохраняет некоторые из его рабочих листов в виде файлов CSV.

Как я могу это сделать?

я нашелсторонние модули для чтения и записи файлов Excel из Python, но, насколько я могу судить, они могут сохранять файлы только в формате Excel (т.е. * .xls). Если я ошибаюсь здесь, то будет полезен пример кода, показывающего, как делать то, что я пытаюсь сделать с этими модулями.

Я тоже сталкивалсяодно решение что я не совсем понимаю, но, похоже, специфичен для Windows и, следовательно, не помог бы мне, так как я хочу сделать это в Unix. Во всяком случае, мне не ясно, что это решение может быть расширено, чтобы делать то, что я хочу, даже под Windows.

Ваш Ответ

3   ответа
7

С помощьюpandas будет немного короче

import pandas as pd

df = pd.read_excel('my_file', sheetname='my_sheet_name')  # sheetname is optional
df.to_csv('output_file_name', index=False)  # index=False prevents pandas to write row index

# oneliner
pd.read_excel('my_file', sheetname='my_sheet_name').to_csv('output_file_name', index=False)
Можете ли вы дать более подробную информацию?
Я не доверяю пандам делать это. Он конвертировал все мои ведущие нули.
33

Самые основные примеры, использующие две библиотеки, описаны построчно:

  1. Open the xls workbook
  2. Reference the first spreadsheet
  3. Open in binary write the target csv file
  4. Create the default csv writer object
  5. Loop over all the rows of the first spreadsheet
  6. Dump the rows into the csv

import xlrd
import csv

with xlrd.open_workbook('a_file.xls') as wb:
    sh = wb.sheet_by_index(0)  # or wb.sheet_by_name('name_of_the_sheet_here')
    with open('a_file.csv', 'wb') as f:   # open('a_file.csv', 'w', newline="") for python 3
        c = csv.writer(f)
        for r in range(sh.nrows):
            c.writerow(sh.row_values(r))

import openpyxl
import csv

wb = openpyxl.load_workbook('test.xlsx')
sh = wb.get_active_sheet()
with open('test.csv', 'wb') as f:  # open('test.csv', 'w', newline="") for python 3
    c = csv.writer(f)
    for r in sh.rows:
        c.writerow([cell.value for cell in r])
4

Использоватьxlrd  или жеopenpyxlмодуль для чтения документов xls или xlsx соответственно, а такжеcsv Модуль для записи.

Альтернативно, если используетсяJython, вы можете использоватьApache POI библиотека для чтения либо.xls или же.xlsxи родной модуль CSV все еще будет доступен.

@StevenRumbalski Включая это; Спасибо!
И если вам нужно читать файлы .xlsx, используйтеopenpyxl.
я предпочитаюxlsxrd читать.xlsx файлы. В какой-то момент он будет объединен вxlrd.

Похожие вопросы