openpyxlの使い方
環境
- Windows10
- anaconda
- python3
- jupyter notebook
モジュールインポート
import openpyxl
openpyxlの使い方
新規のファイルを作成してA1セルに”テスト”と書き込み保存する
wb = openpyxl.Workbook()
ws = wb['Sheet']
ws.cell(1, 1).value = 'テスト'
wb.save('test.xlsx')
wb.close()
※ファイル名は「test.xlsx」としています。
既にあるEXCELファイルを開いて、A1セルの値を出力する
さっき、作成したファイルを取得します。
openpyxl.load_Workbook
wb = openpyxl.load_workbook('test.xlsx', read_only=True)
ws = wb['Sheet'] # アクティブなシートで良ければwb.activeでもOK
print(ws.cell(1, 1).value)
wb.close()
「テスト」というテキストが出力されると思います。
※”read_only=True”は読み込み専用
シート名を変更する
ws.title
wb = openpyxl.load_workbook('test.xlsx')
ws = wb['Sheet']
ws.title = "テストタイトル"
wb.save('test.xlsx')
wb.close()
※ちゃんとセーブしないと反映されないので注意して下さい。
Pandasのデータフレームとのやり取り
モジュールインポート
from openpyxl.utils.dataframe import dataframe_to_rows
OpenPyXLのユーティリティ
PandasのデータフレームをOpenPyXL用の行単位のオブジェクトに分割してくれるもの
データフレームをEXCELシートに書き出す
wb = openpyxl.workbook()
ws = wb.active
ws.cell(1, 1).value = 'データ'
rows = dataframe_to_rows(df, index=False, header=True)
# 表の貼り付け位置
row_start = 2
col_start = 1
for row_no, row in enumerate(rows, row_start):
for col_no, value in enumerate(row, col_start):
ws.cell(row_no, col_no).value = value
wb.save('test.xlsx')
wb.close()
EXCELの書式関係の処理
モジュールインポート
from openpyxl.styles import PatternFill, Border, Side, Font
OpenPyXLのスタイル関係の機能のインポート
データフレームをEXCELシートに書き出す
cell = ws.cell(3, 2)
#罫線の種類と色
cell.fill = PatternFill(patternType='solid', fgColor='008080')
#文字の太さと色
cell.font = Font(bold=True, color='FFFFFF')
#セルの幅
ws.column_dimensions['A'].width = 20
wb.save(filename)
wb.close()
グラフの作成
モジュールインポート
from openpyxl.chart import Reference, BarChart, PieChart, LineChart, ScatterChart, Series
グラフ関係の機能をインポート
折れ線グラフ(LineChart)
wb = openpyxl.load_workbook('test.xlsx')
ws = wb.active
# グラフに使うデータの範囲を指定(ここにデータがあるとします)
refy = Reference(ws, min_col=4, min_row=4, max_col=4, max_row=23)
# グラフシリーズを生成
series = Series(refy, title='凡例タイトル')
# Chart
chart = LineChart()
chart.title = '折れ線グラフ'
chart.x_axis.title = 'X軸のタイトル'
chart.y_axis.title = 'Y軸のタイトル'
chart.height = 10
chart.width = 20
chart.series.append(series)
# 生成したChartオブジェクトをシートの指定位置に追加
ws.add_chart(chart, 'A2') #A2セルのところにグラフが出来る
wb.save('test.xlsx')
wb.close()
コメント
load_Workbookのところwは小文字です
あっ!
ありがとうございます!ヘ(^o^)/
直しますm(_ _)m