【Python】ValueError: Cannot convert (‘木’,) to Excel が発生した原因と対処法|openpyxlエラー完全解説

目次

使用環境

  • OS:Windows 10 Pro(バージョン:20H2)
  • 言語:Python(pandas、openpyxl使用)

経緯

Pythonを使い、pandasで抽出したデータをopenpyxl経由でExcelに貼り付けようとしたところ、
次のエラーが発生しました。

ValueError: Cannot convert ('木',) to Excel

データを確認すると、
**「木」「林」「森」「4」「8」「12」**と並ぶ表があり、
1行目にカラム、2行目にデータが存在している構成でした。

このエラーへの対処と、より良いやり方を整理しました。


エラー原因

今回のエラーは、
セルに渡そうとした値が文字列ではなく、タプル型(tuple)になっていたために発生しています。

openpyxlでは、
文字列型(str)、数値型(int、float)、日付型(datetime)などのシンプルな型しか、セルに書き込むことができません。
タプルやリストなどの複合型をそのまま渡すとエラーになります。


あなたが採った応急処置方法(正しいアプローチ)

  • 一旦データをすべて数値に変換してから貼り付ける
  • その後、カラム名(木・林・森)を個別に手動で設定する

これは確かに実用的で正しいやり方です。
しかし、もっとスマートにエラーを防ぎながらデータを貼り付ける方法も存在します。


根本的な対処法:タプルを文字列に変換してから貼り付ける

タプルをセルに渡す直前で文字列に変換してしまえば、
エラーなく処理できます。

改善版コード

import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows

# ワークブックとシート作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "sheet1"

# データフレームを行ごとに取得
rows = dataframe_to_rows(data, index=False, header=True)

row_start = 1
col_start = 1

for row_no, row in enumerate(rows, row_start):
    for col_no, value in enumerate(row, col_start):
        # タプル型なら文字列に変換
        if isinstance(value, tuple):
            value = "".join(map(str, value))
        ws.cell(row=row_no, column=col_no).value = value

ポイント解説

  • **isinstance(value, tuple)**で、タプルかどうか判定します。
  • タプルなら、**"".join(map(str, value))**で中身を結合して文字列化します。
  • これにより、「(‘木’,)」のようなデータでも「木」という単純な文字列として書き込めるようになります。

補足:なぜタプルになったのか?

もともとのDataFrameで、

  • 複数列まとめて1セルに格納しようとした
  • あるいは何らかの加工時にタプルになってしまった

といった背景が考えられます。
特に、SQL抽出や結合処理後にタプル化するケースがよくあります。


まとめ

PythonでValueError: Cannot convert (‘木’,) to Excelが発生した場合は、

  • セルに渡す前にデータ型を確認する
  • タプル型の場合、文字列に変換してから書き込む
  • 根本対策として、データ準備段階で型を整えるのも有効

これらを意識することで、
エラーなくスムーズにExcelファイル出力が可能になります。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次