【要約】1月だけ0件になった。カレンダー型のExcelを openpyxl で読む [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、社内AIの動作制御用にExcelから休業日データを読み取る際、エラーが出ないままデータが0件になる問題に直面した。主な原因は以下の3点である。
- ・テーマ色によるRGB値の欠落:Excelのテーマ色を使用すると、RGB値が空で返る。
- ・セル構造の乖離:1日分が2行1組の構造であり、日付と色が別セルに存在する。
- ・ロジックの誤認:シート内の「月」の見出しを「1日」と誤認し、連番が途切れたと判定して読み取りを中断する。
// Approach
開発者は、Excelの内部仕様とデータの物理的な配置に基づき、以下の手法でロジックを修正した。
- ・色判定の強化:テーマ番号とRGB値の両方をチェックするロジックを実装した。
- ・走査範囲の拡大:日付セルと色セルの両方を判定対象とした。
- ・相対的な読み取り:座標の決め打ちを廃止し、見出し文字列を起点とした相対的な読み取りに変更した。
// Result
開発者は、修正により1月のみデータが取得できない不具合を解消した。これにより、以下の成果を得た。
- ・正確なデータ抽出:年間106日の休業日を正しく抽出できるようになった。
- ・検知精度の向上:月単位での集計を行うことで、不具合を早期に発見できる体制を整えた。
Senior Engineer Insight
> 「人間向けの帳票」はデータソースとして極めて不安定だ。座標の決め打ちや、合計値のみの検証は、本件のようなサイレントエラーを見逃す。データが0件になりうる最小単位(月・シート)での検証を徹底すべきだ。Excelをソースにする際は、構造の不確実性を前提とした堅牢な設計が求められる。