某SIerさんといわず、大手のSIerさんと話していると、
たまに、意外なご相談を受けたりします。
そのSIerさん、Excel の帳票があって、それを Webサーバー側で出力してクライアント側に渡す、っていう処理を作ろうとしていて。
でも、サーバーサイドでExcelなりOffice を使ってイジイジするのは例の、サーバーサードオートメーションの関連でダメだからね、と伝えていました。
とか
Office サーバー サイド オートメーションの危険性について
とか。
じゃあ、OpenXML ( OpenXML 自体は規格の名称なので、正式には OpenXML SDK 、ですが面倒なのでもう OpenXML で。) でやろう、ってことになったみたいです。
ここまではいいのですが。
OepnXMLとExcelのオートメーションでは、Excelドキュメントを扱う発想が全く違うわけで。
Excelのオートメーションは、Excelアプリケーションを使って、Excelワークシートを作り上げていく感じ。
かたや、
OpenXML は、Open XML ファイルフォーマットに従った形式で、直接Excelなりのワークシートを作り上げる感じ。きほんXMLですし、その形式でラクに作るために省力化してくれる感じ。
Standard ECMA-376 Office Open XML File Formats
ってことで、たとえばA1セルに “3” と入れていて、A2セルに “5” と入れていて、A3セルに “=A1+A2” という式を入れていた場合、
・Excelオートメーションだったら、A3セルの値は “8” ですけど
・OpenXMLだったら、A3セルの値 ( CellValue プロパティ ) は何も入ってない ( Excel アプリケーションで計算式を入力していたら、その計算結果が入っている。”8″ とか。 )
という感じで。
A1セルの値を “4” に変えたとき、
・Excelオートメーションだったら、A3セルの値は “9” ですけど
・OpenXMLだったら、A3セルの値 ( CellValue プロパティ ) はやっぱり、何も入ってない
という感じです。
ようは、再計算しないわけですよね。
とーこーろーがです。
大手SIerさんて、ドキュメントベースでお仕事することが多いので、こういうドキュメントを見ると、誤解するみたいです。
—– 引用ここから —–
式を使用して計算モデルを作成できます。式は、スプレッドシートの内部または外部のデータ、またはスプレッドシート内の他の計算セルの出力に基づく、値の自動計算に対応しています。
—– 引用ここまで —–
これをみて、「なぜ値が変わらない? OpenXML でも自動計算に対応しているはずじゃないか!これはOpenXML作ったマイクロソフトのバグだ!!(うちらは悪くない)」と。
でも、ちょっと考えたらわかるじゃないですか。これってExcelなりスプレッドシートを開くアプリケーションが、自動計算する、っていう意味でしょ、って。
なんかこういうのを見ると、例の某首相と大学の獣医学科?学部?の件の、マスコミの偏向報道を連想してしまうんです。
人間って物事を見たいように見るわけで
ドキュメントを読んでいても、自分が欲しい情報をそのように読み込んでしまう。
大事なことは事実を知ることで、
マスコミさんなら、頭をまっさらにして情報を偏りなく集めて(せめてYouTube で国会中継を一通り見てみるとか)それをまんべんなく消化して書き出す。
技術者なら、きちんと動かして動作をみて、その動作になる理由を原理原則に照らして考える。その上で、どうにも意図しない動作っぽい場合はバグじゃね?と判断するわけで。
まあ、ちゃんと検証してドキュメントもまっさらな頭で読みましょうね、ということですね。