##その後
プロデルでネ申Excel作成を自動化したい #2をベースにアプリを1本作りました。すでに導入している拙作の日誌アプリのデータベースファイルから、利用者の諸々のデータを読み出して予定表のxlsxファイルに書き出すものです。日誌アプリは過去だけでなく未来の内容についても入力できるようにしてあるので、スケジュールが確定したら日誌アプリでデータ入力(GUIでさくさく行えます)→件のアプリでxlsxファイルを出力という業務の流れにすれば、大幅な労力削減になります。
早速、依頼者とその部署のスタッフに見せたところ、何か妙な反応でした。Excel上で解決するものと思い込んでいたようで、Excelが一度も画面に現れることなくxlsxファイルがデスクトップに出現する光景が理解不能で、いささか面食らったようです。多分これはお流れになるだろうと思っていたところ、一週間ばかり経ってから依頼者よりあのアプリを導入したいと。ただし、追加の要望があって、多くの利用者が参加する日は予定表の枠に名前が入りきらないので、自動でフォントサイズを調整できないかと。今度は私が面食らいました。上長の『調整』もあったのでしょうが、毒を食らわば皿まで、とばかりに自動化の話に大胆に乗って来たのでしょう。正直言うと、書式設定をいじるのは大変ややこしそうなので、自動出力で足らない部分は手作業で修正してほしかったのですが、そうならこちらも毒を食らわば皿まで、やることにしました。
##.xlsxファイルのセルのフォントサイズを書き換えるには?
実際大変めんどくさかったのです。https://p-space.jp/index.php/development/open-xml-sdk をざっと参考にした限りでは、xl/worksheets/sheet1.xmlが参照しているxl/styles.xmlのフォント定義のサイズ部分だけ書き直すだけ良さそうに思えたのですが、xlsxファイルを何パターンか作ってみて、複数のセルが同じフォント定義やセルの書式定義を参照しているらしいことが分かりました。ということは、参照されているフォント定義とセルの書式定義(それぞれstyles.xmlのstyleSheet/fonts/font要素とstyleSheet/cellXfs/xf要素)のコピーを作ってそのフォントサイズを変え、参照元のインデックス番号も書き換えることになります。
また、もともとがセルに入っている記号をもとにセルの場所を特定する仕組みのアプリですので、処理の流れとしては、xl/sharedString.xmlの文字列を入れている要素のインデックスからsheet1.xml内の参照元を探し、そこからようやくフォント定義やセル定義に辿り着けるのです。整理しながら進めないと参照関係がごちゃごちゃになりそうです。というか、プロデルで要素のコピーとかどうすんのよ!?いささか途方に暮れました。
More than 5 years have passed since last update.
プロデルでネ申Excel作成を自動化したい フォントサイズ編 #0
Last updated at Posted at 2019-07-11
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme