openpyxl 日本語業務Excel 生成キット | 条件付き書式・列幅・印刷・文字化けの罠と回避コード (MIT)
- ダウンロード商品¥ 0


■ openpyxl で「客先に出せる日本語の業務 Excel」を作るときに踏む罠と、その回避コードをまとめた 小さなキットです。MIT ライセンスの無料配布です。 【なぜ作ったか】 自社で販売している Excel テンプレートを openpyxl で生成する過程で、静かに壊れて あとから気づく種類の罠に何度も当たりました。どれも「動いたように見えるのに、 Excel で開くと違う」類のもので、原因にたどり着くまでが長い。同じところで 時間を溶かす人が減ればと思って、コードごと出しています。 【扱っている 6 つの罠】 01 条件付き書式の色が、環境によって出たり出なかったりする 02 列幅を len() で測ると、日本語が潰れる 03 fitToWidth を設定しても、印刷が割れる 04 結合セルの左上以外に書くと落ちるが、どの結合かがエラーから分からない 05 日付が文字列のまま渡り、並べ替えもフィルタも効かない 06 shell の zip は UTF-8 フラグを立てず、Windows でファイル名が化ける 【同梱物】 ・xlsx_ja_kit.py … 上記の回避関数 (cf_fill / autosize_ja / fit_to_one_page / safe_write / find_merge_conflicts / postprocess / zip_utf8) ・check_xlsx.py … 作ったブックを出荷前に検査するスクリプト ・example_build.py … 実際に 1 ファイル作って検査まで通す例 ・README.md … 各罠の説明と使い方 ・LICENSE … MIT 【検査スクリプトについて】 作ったブックを出荷前に 1 コマンドで検査します。 失格になるもの ・結合範囲どうしの重複 (Excel の修復ダイアログの主犯) ・結合の左上以外に残っている値 ・fitToWidth を設定しているのに fitToPage が立っていない ・色が決まらない条件付き書式 ・数式の括弧・引用符が閉じていない 警告として出るもの ・日付に見える文字列 ・数式が 1 つも無いブック ・fgColor だけの条件付き書式 数式の括弧の検査は、実際にこちらが括弧を 1 つ閉じ忘れたブックを出荷しかけて 足したものです。openpyxl も LibreOffice も黙って受け取るので、Excel で開くまで 気づけません。 【動作環境】 ・Python 3.10 以降 / openpyxl 3.1 系で確認しています ・macOS で作っていますが、OS 固有の処理は入っていません 【サポートの範囲】 MIT ライセンスの無保証配布です。不具合の報告は歓迎しますが、対応をお約束するもの ではありません。 また、税務・会計・法律・労務の判断にあたるご質問には、いっさいお答えできません。 このキットで作った帳票の内容が法令の要件を満たすかどうかの判断も含みます。 それぞれ有資格の専門家にご相談ください。 【断り書き】 README に書いた挙動は、こちらの環境 (openpyxl 3.1.5 / Microsoft Excel for Mac / LibreOffice) で確認した範囲のものです。バージョンや環境によって違う可能性が あります。「必ずこうなる」と断定できない箇所は、そう書いてあります。 --- Up the Moon合同会社 https://upthemoon.co.jp/

