[OpenXML] ちょっと考えればわかるのに、意外な相談

某SIerさんといわず、大手のSIerさんと話していると、
たまに、意外なご相談を受けたりします。

そのSIerさん、Excel の帳票があって、それを Webサーバー側で出力してクライアント側に渡す、っていう処理を作ろうとしていて。

でも、サーバーサイドでExcelなりOffice を使ってイジイジするのは例の、サーバーサードオートメーションの関連でダメだからね、と伝えていました。

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さんて、ドキュメントベースでお仕事することが多いので、こういうドキュメントを見ると、誤解するみたいです。

 

式を操作する (Open XML SDK)

—– 引用ここから —–
式を使用して計算モデルを作成できます。式は、スプレッドシートの内部または外部のデータ、またはスプレッドシート内の他の計算セルの出力に基づく、値の自動計算に対応しています。
—– 引用ここまで —–

これをみて、「なぜ値が変わらない? OpenXML でも自動計算に対応しているはずじゃないか!これはOpenXML作ったマイクロソフトのバグだ!!(うちらは悪くない)」と。

でも、ちょっと考えたらわかるじゃないですか。これってExcelなりスプレッドシートを開くアプリケーションが、自動計算する、っていう意味でしょ、って。

 

なんかこういうのを見ると、例の某首相と大学の獣医学科?学部?の件の、マスコミの偏向報道を連想してしまうんです。

人間って物事を見たいように見るわけで
ドキュメントを読んでいても、自分が欲しい情報をそのように読み込んでしまう。

 

大事なことは事実を知ることで、
マスコミさんなら、頭をまっさらにして情報を偏りなく集めて(せめてYouTube で国会中継を一通り見てみるとか)それをまんべんなく消化して書き出す。
技術者なら、きちんと動かして動作をみて、その動作になる理由を原理原則に照らして考える。その上で、どうにも意図しない動作っぽい場合はバグじゃね?と判断するわけで。

まあ、ちゃんと検証してドキュメントもまっさらな頭で読みましょうね、ということですね。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください