
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
コメント