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