ライブラリ リスト 文法・環境

【Python】リスト(list)をエクセル(Excel)へ出力する方法【openpyxl、pandas】

Pythonのリスト(list)をExcelに出力する方法を紹介します。

PythonのExcel操作の定番ライブラリである、「openpyxl」を用いたリストのExcel出力方法を中心に紹介しています。

また、補足的な内容として、「pandas」を用いたリストのExcel出力方法についても、サンプルコードを交えながら紹介しています。

この記事で分かること

①Excel出力できるライブラリ「openpyxl」の基本的な使い方

  • openpyxlのインストール方法
  • openpyxlの基本的な使い方

②「openpyxl」を利用して、リスト(list)をExcelへ出力する方法

③「pandas」を利用して、リスト(list)をExcelへ出力する方法

スポンサーリンク

Excel出力できるライブラリ「openpyxl」の基本的な使い方

pythonでExcelを操作する方法はいくつかありますが、

最もよく使われるのが、外部ライブラリの「openpyxl」です。

はじめに、openpyxlの基本的な使い方について紹介します。

openpyxlのインストール

openpyxlは外部ライブラリであるため、

pipコマンドでのインストールが必要です。

コマンドプロンプトから、下記を入力し、インストールします。

>pip install openpyxl

openpyxlの基本的な使い方

リストをExcelに出力を紹介する前に、

openpyxlの基本的な使い方を紹介します。

下記は、新規でExcelのworkbookを作成する場合のサンプルコードになります。

### openpyxlの基本的な使い方
import openpyxl

excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

wb = openpyxl.Workbook()
sheet = wb.worksheets[0]

sheet.cell(2, 1, "Apple")

wb.save(excel_path)
wb.close()

>import openpyxl

import文で、openpyxlをインポートします。

>excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

新規に作成する、Excel Workbookのディレクトリと、ファイル名を指定しています。

「***** 任意の保存先 *****」の部分は、好きな場所に置き換えてください。

また、文字列の先頭に「r」をつけると、その文字列は 「raw文字列」 として扱われます。

例えば、"\n"という文字列は、pythonにより改行として扱われてしまいますが、raw文字列とすることで文字列の一部として扱われるようになります。

>wb = openpyxl.Workbook()

このコマンドで、Excelファイルを作成しています。

>sheet = wb.worksheets[0]

0番目のExcel sheetを指定しています。

>sheet.cell(2, 1, "Apple")

先ほど指定したsheetの、2行1列目に、"Apple"と書き込みます。

2行1列目とした、特別な理由はありません。挙動が分かりやすいので、行と列を変えました。

>wb.save(excel_path)

先ほど、指定したパスで、Excelを保存します。

>wb.close()

Workbookを閉じます。

すでにあるExcelファイルに、openpyxlを利用して書き込む場合

すでに作成済みのExcelのWorkbookに書き込む場合のサンプルコードも載せておきます。

### すでにあるWorkbookに書き込む場合
import openpyxl

excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

wb = openpyxl.load_workbook(excel_path)
sheet = wb.worksheets[0]

sheet.cell(3, 1, "Banana")

wb.save(excel_path)
wb.close()

Workbookを新規作成する場合の、

wb = openpyxl.Workbook()  を、

wb = openpyxl.load_workbook(excel_path)  に、

変えています。

スポンサーリンク

openpyxlを利用して、リスト(list)をExcelへ出力する方法

ここからが本題です。

openpyxlを使って、リストをExcelへ出力する方法を紹介します。

下記2つの方法について、サンプルコードを用いながら紹介します。

方法①:sheet.append( )を使って、Excelに出力

はじめに、リストを行ごとに書き込んでいく方法を紹介します。

以下、サンプルコードです。

### リストをExcelに出力するサンプルコード(行ごと出力)
import openpyxl

list_1 = [
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34],
]

excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

wb = openpyxl.Workbook()
sheet = wb.worksheets[0]

for row in list_1 :
    sheet.append(row)

wb.save(excel_path)
wb.close()

for row in list_1 :

sheet.append(row)

の部分で、list_1から行を1つずつ取り出し、

sheet.append(row)でExcelに出力しています。

方法②:関数を作成して、Excelに出力

次に、関数を定義して、リストをExcel出力する方法を紹介します。

以下、サンプルコードです。

### リストをExcelに出力するサンプルコード(関数定義)
import openpyxl

def write_list_2d(sheet, l_2d, start_row, start_col):
    for y, row_data in enumerate(l_2d):
        for x, cell_data in enumerate(row_data):
            sheet.cell(row=start_row + y, column=start_col + x, value=l_2d[y][x])

list_1 = [
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34],
]

excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

wb = openpyxl.Workbook()
sheet = wb.worksheets[0]

write_list_2d(sheet, list_1, 2, 1)

wb.save(excel_path)
wb.close()

def文で、リストの要素を1つずつ取り出して、書き込んでいく関数を定義しています。

>write_list_2d(sheet, list_1, 2, 1)

定義した関数に引数を渡して、Excelに書き込んでいます。

引数は順番に、"openpyxlのworksheet"、"リスト"、"書き込み開始行"、"書き込み開始列"

になっています。

なお、サンプルコードの作成にあたっては、

こちらのサイトを参考にさせていただきました。

スポンサーリンク

pandasを利用して、リスト(list)をexcelへ出力する方法

参考までに、openpyxlの代わりにpandasを利用して、リストをExcelに書き込む例を紹介します。

なお、pandasは、データ解析を支援する機能を提供してくれるライブラリです。

以下、サンプルコードです。

###### リストをExcelに出力するサンプルコード(pandas利用)
import pandas as pd

list_1 = [
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34],
]

excel_path = r"C:\***** 任意の保存先 *****\test.xlsx"

df = pd.DataFrame(list_1)

df.to_excel(excel_path, sheet_name='test', index=False, header=False, startrow=1, startcol=0)

>df = pd.DataFrame(list_1)

リストをDataFrameオブジェクトに変換しています。

>df.to_excel(excel_path, sheet_name='test', index=False, header=False, startrow=1, startcol=0)

DataFrameオブジェクトに変換したデータをExcelに出力しています。

「index=False, header=False」:インデックス、カラム名は出力無しとしています。

「startrow=1, startcol=0」:2行1列目から出力しています。df.to_excelは、セルの開始が0始まりになっていることに注意してください。

スポンサーリンク

まとめ

pythonのリスト(list)をExcelに出力する方法について紹介しました。

「openpyxl」は業務の効率化に取り組みたい場合は、必須になるライブラリですので、基本的は使い方は覚えておくようにしましょう。

なお、リストをcsvに出力する方法を下記記事で紹介しています。併せて参考にしてみてください。

スポンサーリンク

-ライブラリ, リスト, 文法・環境
-, ,