Excelで帳票印刷するなら

2008年 11月 1日

業務アプリケーションを作るとき、帳票は必ずと言って付いてくる。WindowsなクライアントならExcelを使用して帳票を作ってしまうアプローチは割とあると思う。

そうなると普通考える所では、クライアントの業務ロジックでExcelを操作する部分を切り離し、class化したりするわけだが、業務アプリケーションからExcel操作用classを介して帳票フォーマットへ値をセットし印刷指示を出すという流れになるだろう。

さて、業務アプリケーションからExcelの指定の位置へ値をセットする場合、業務アプリケーションでcellの座標を指定させるべきだろうか?否、それでは業務アプリケーションは帳票フォーマットと一体となってしまい、保守性が落ちる。業務アプリケーションと帳票フォーマットの結合を薄くするには・・・

一つには、帳票フォーマットであるExcelがフォーマットだけではなく、もう少しだけアプリケーションのような意味を持てばいい。それは位置に項目名を持つということだ。ただし、帳票フォーマットのcellに直接項目名の文字列を入れるというアプローチはよろしくない。(汚いと思うし)

ではどうするか、結論としてはフォーマットのcellにコメントをつければいい。つまりコメントにはそのcellの名前が付いていて、帳票印刷classでは初期化時にフォーマットに付いているコメントと位置をハッシュなどに保持するわけだ。すると、業務アプリケーションは帳票印刷classに対して、出力する項目名と内容を指示すればよくなるから、帳票フォーマットで位置をずらそうが業務アプリケーションは無修正で良くなる。

言葉だけだが、こんなアプローチもありではないかな?