df(l2d)をExcelの特定列から書き込む

投稿者: | 2022-06-22

import pandas as pd
import numpy as np
from openpyxl.utils.dataframe import dataframe_to_rows

# 2次元配列 l_2dをwsの指定箇所へ書き込む関数(注:enumerateはジェネレーター不可)
def write_l2d(ws_obj, l_2d, start_row, start_col):
    for y, row in enumerate(l_2d):
        for x, col in enumerate(row):
            ws_obj.cell(row=start_row + y, column=start_col + x, value=l_2d[y][x])

# サンプルDF             
df = pd.DataFrame(np.random.randint(1, 100, (10, 4)), columns=list('ABCD'))

wb = Workbook()
filename = 'write_l2d.xlsx'
ws1 = wb.active

# dfをジェネレーター > リストに変換する
df_l2d = list(dataframe_to_rows(df, index=None, header=None))

# セルC5(4, 3)からl2dを書き込む
write_l2d(ws1, df_l2d, 4, 3)

wb.save(filename=filename)