Excelスプレッドシートを読み取り、そのワークシートの一部をCSVファイルとして保存するPythonスクリプトを記述したいと思います。
これどうやってするの?
PythonからExcelファイルを読み書きするための サードパーティモジュール を見つけましたが、私が知る限り、Excel(つまり* .xls)形式でのみファイルを保存できます。ここで私が間違っている場合は、これらのモジュールで実行しようとしていることを実行する方法を示すいくつかのサンプルコードをいただければ幸いです。
私も遭遇しました 1つの解決策 完全には理解できませんが、Windows固有であるように思われ、Unixでこれを実行したいので、とにかく助けにはなりません。とにかく、Windowsでも、このソリューションを拡張して自分のやりたいことを実行できるかどうかははっきりしません。
行ごとに説明されている2つのライブラリを使用した最も基本的な例:
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])
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)
xlrd
または openpyxl
モジュールを使用して、それぞれxlsまたはxlsxドキュメントを読み取り、 csv
書き込むモジュール。
あるいは、 Jython を使用している場合、 Apache POI ライブラリを使用して.xls
または.xlsx
を読み取ることができ、ネイティブCSVモジュールは引き続き利用可能です。
まず、ExcelスプレッドシートをPandasに読み込みます。以下のコードは、ExcelスプレッドシートをPandasとしてOrderedDict
としてインポートします。これには、すべてのワークシートがDataFrames
として含まれます。次に、worksheet_name
をキーとして使用します特定のワークシートにDataFrame
としてアクセスし、df.to_csv()
を使用して必要なワークシートのみをcsv
ファイルとして保存します。これがあなたのケースでうまくいくことを願っています。
import pandas as pd
df = pd.read_Excel('YourExcel.xlsx', sheet_name=None)
df['worksheet_name'].to_csv('output.csv')