動かざることバグの如し

近づきたいよ 君の理想に

Pyrthon3でエクセルファイルをCSVに変換する

たいてい転がってるサンプルがPython2でキレたので書いた

変換するにはライブラリが必要である。Pythonでエクセルを扱えるメジャーなライブラリは以下

順に見ていく

openpyxl

xlsには対応していない。

Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.

今回は見送る。

pandas

コード的には一番シンプルである。

import pandas as pd

xls_file = pd.read_excel('1.xls', sheet_name = "Sheet1")
xls_file.to_csv('MySpreadsheet.csv', index = False)

が、pandas自体がそもそもエクセル用ライブラリであるわけではないので、今回変換したいファイルだと崩れてしまった。

xlrd

今回はこれで成功した

import xlrd
import csv

def csv_from_excel():
    wb = xlrd.open_workbook('1.xls')
    sheet = wb.sheet_by_index(0)
    your_csv_file = open('output.csv', 'w', encoding='utf8')
    wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)

    for row_index in range(sheet.nrows):
        row = sheet.row(row_index)
        for cell in row:
            wr.writerow(sheet.row_values(row_index))

    your_csv_file.close()

csv_from_excel()