OpenpyxlでExcel操作時に出るエラーの原因と対処法|セル・データ操作関連

CellCoordinatesExceptionの原因と解決方法

CellCoordinatesExceptionとは?

CellCoordinatesException は、セルの位置を表す文字列がExcelのルールに合っていない場合に発生する例外です。

エラー例

 from openpyxl import Workbook 

 wb = Workbook() 
 ws = wb.active 
 
 ws['1A'] = 'データ'  # ❌ CellCoordinatesExceptionが発生
  • セル座標は 英字(列)+数字(行) の順で指定する

IllegalCharacterErrorの原因と対処法

IllegalCharacterErrorとは?

IllegalCharacterError は、Excelファイルの仕様上、入力できない文字をセルに書き込もうとしたときに発生するエラーです。
Excelでは、一部の制御文字(ASCIIコード0〜31)が無効とされており、これらを含む文字列をopenpyxlで保存しようとするとエラーになります。

発生しやすいケース

  • Webスクレイピングで取得したテキストに見えない制御文字が含まれている
  • 外部ファイル(CSVやテキスト)から読み込んだデータに特殊文字が混じっている
  • chr()やバイナリ処理で偶然制御文字を含む文字列を生成してしまった

対処法:不正な文字を除去する

openpyxlには、制御文字を検出して削除するための便利な正規表現が用意されています。
openpyxl.cell.cell.ILLEGAL_CHARACTERS_RE を使えば簡単にクリーンな文字列に変換できます。

from openpyxl import Workbook
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE

text = 'Hello' + chr(1) # 制御文字を含む
clean_text = ILLEGAL_CHARACTERS_RE.sub('', text) # 不正文字を除去

wb = Workbook()
ws = wb.active
ws['A1'] = clean_text # ✅ エラーなしで書き込み可能

wb.save('cleaned.xlsx')

NamedRangeExceptionの原因と対処法

NamedRangeExceptionとは?

NamedRangeException は、存在しない名前付き範囲にアクセスしたり、定義の形式が正しくなかったりする場合に発生する例外です。

エラー例

from openpyxl import load_workbook

wb = load_workbook("sample.xlsx")

# "MyRange" という名前付き範囲が定義されていないとエラー
defined_range = wb.defined_names["MyRange"] # ❌ NamedRangeExceptionが発生

公式ドキュメント

openpyxl.utils.exceptions — openpyxl 3.1.3 documentation

コメント

タイトルとURLをコピーしました