python初心者です。
openpyxlでエクセルの既存シートにCSVのデータを書き込もうとするとエラーが出ます。
エラー内容をいろいろ検索して調べてもどうしてよいのか分かりません。。
どなかたお詳しい方お教えください。
よろしくお願いいたします。
===プログラム===
#書き込みたいデータ
df_x = pd.read_csv('log009_AirFilter2410170759.csv',encoding="shift-jis")
#既存のExcelファイルを読み込む
file_path = 'log009_AirFilter2410170759_ver3_plate.xlsx'
wb = load_workbook(file_path)
#書き込みたいシートを選択する
sheet_name = 'Sheet0' # 書き込みたいシート名
sheet = wb[sheet_name]
#書き込みたいデータをリストで指定する
data_to_write = df_x
(元のサンプルではもともと以下のようになっていたのを修正しました。
この修正方法がおかしいのでしょうか?
data_to_write = ['value1', 123, 'value3'] # 書き込みたいデータ)
#sheet.append()でデータを追加する
sheet.append(data_to_write)
#変更を保存する
wb.save(file_path)
===エラーメッセージ===
TypeError Traceback (most recent call last)
<ipython-input-9-d1cc27c3ddc8> in <module>
14
15 # 4. sheet.append()でデータを追加する
---> 16 sheet.append(data_to_write)
17
18 # 5. 変更を保存する
C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\worksheet.py in append(self, iterable)
659
660 else:
--> 661 self._invalid_row(iterable)
662
663 self._current_row = row_idx
C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\worksheet.py in _invalid_row(self, iterable)
790 def _invalid_row(self, iterable):
791 raise TypeError('Value must be a list, tuple, range or generator, or a dict. Supplied value is {0}'.format(
--> 792 type(iterable))
793 )
794
TypeError: Value must be a list, tuple, range or generator, or a dict. Supplied value is <class 'pandas.core.frame.DataFrame'>

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/08/16 05:20