Python エクセルの列を追加して、データの最終行に値を入力する方法

Python備忘録。内容は初心者向けです。

今回の内容

  • CSVファイルの読み込み
  • エクセルの列の追加
  • 最終行に合計値を入力

最終行に値を入力するのが思うようにいきませんでしたが、なんとか完成です!!



使用するのはopenpyxl

使用するのは、エクセルファイルを読み書きできるPythonライブラリopenpyxlです。

サンプルコード


import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

wb=Workbook()
ws=wb.active

df=pd.read_csv('fruits price.csv',encoding='shift_jis')

df['合計']=df['価格'] * df['個数']

for row in dataframe_to_rows(df,index=None,header=True):
    ws.append(row)

ws.cell(row=ws.max_row+1,column=4).value =df['合計'].sum()

wb.save('keisan.xlsx')

コメント

  • Pythonファイルと同じフォルダに「voltage.csv」を保存しておく
  • df=pd.read_csv〜 で「fruits price.csv」の読み込み
  • df[‘合計’]=df〜 で列を追加
  • for row in dataframe〜 で1行ずつ取得
  • ws.append(row)で取得した値をwsへ書き込み
  • ws.cell (row〜 で最終行に値を追加

最後の「ws.cell (row〜」の部分が分かりにくいかもしれません。

「(row=ws.max_row+1,column=4)」でD列の最終行です。そこにトータル金額を入力しています。

出力


「fruits price.csv」ファイルの中身。果物と価格、個数が入力されています。


プログラムを実行すると、価格と個数をかけた数値、さらに最終行にはトータル金額が表示されたエクセルファイルを作成することができました。

注記

うまくいかないときは「encoding=’shift_jis’」を「encoding=’utf-8’」などへ変えると良いかもしれません。