中村 (2010年10月26日 11:14) 流通システム部
みなさん、こんにちは。
このところ、AccessやExcelを改めて使う機会が増えました。 やはりユーザーにとって使いやすいというのは、一番の需要になるのでしょうね。
特に多いのが、データや帳票をExcelに出力してほしいというご要望です。 出力した結果を、お客様が自由に加工できるというのが魅力なのでしょう。
Webシステムを利用する際に、PHPでは複数のExcel用ライブラリがフリーでも出ていますが、 ASPやASP.NETを利用することの多い私はExcelCreatorを何度か利用しています。
ExcelCreatorはWebサーバー上にOfficeをインストールせずにExcelファイルを 作成することができる優れものです。 また、既にExcelで作成されたファイルからデータを読み取ることもできます。
今回はこのExcelCreatorで少し困ってしまった点について、 解決方法も含めてご紹介します。
ExcelCreatorでは、セルに値を設定することも、計算式を設定することもできます。 元々用意してあったExcelの場合、式を埋め込むとその計算結果が表示されます。 そのまま保存した場合、保存された状態の値をExcelCreatorで読み取ることもできます。
しかし、ASPなどで式を埋め込んだ場合、一旦Excelでファイルを開いて計算させたうえで 保存しなければ、計算結果が取得できないという現象がありました。 式を埋め込んであった場合でも、一旦ExcelCreatorで開いて、式に使用する値を変更しても 計算結果が変わらないという状況です。
これは、ExcelCreatorではそもそもExcelを起動しているわけではないので、 計算式やワークシート関数など、Excel自体の機能は起動しなければ計算されないということのようです。
このため、計算式を埋め込む時には、初期値を一緒に設定するようにします。
Xls1.Cell("A1").Long = 1000 Xls1.Cell("A2").Func = "=A1+500" '←初期値なしになってしまう。 Xls1.Cell("A2").Func2 "=A1+500", 1500 '←初期値がセットされる。
ここで注意! 計算式をセットするだけなら、Funcプロパティを使用できましたが、 初期値を設定するFunc2はメソッドです。※イコール(=)は不要です。
ちなみに上記のコードはExcelCreator Ver3.0を対象としています。 Ver3.6や.NET用のVer5.0以降では、Funcメソッドのみに統一され、初期値も設定可能になったようです。
計算式を埋め込んでおくことができるExcelで初期値をいちいち設定するというのは 少し使い勝手が悪い印象を受けますが、そもそも式を埋め込んでおくようなケースであれば 一度開いて利用することを前提とすることもできるでしょう。 ツールの注意点を理解して、うまく利用していきたいですね。
ExcelCreatorで計算結果が読み取れない?
中村 (2010年10月26日 11:14)
流通システム部
みなさん、こんにちは。
このところ、AccessやExcelを改めて使う機会が増えました。
やはりユーザーにとって使いやすいというのは、一番の需要になるのでしょうね。
特に多いのが、データや帳票をExcelに出力してほしいというご要望です。
出力した結果を、お客様が自由に加工できるというのが魅力なのでしょう。
Webシステムを利用する際に、PHPでは複数のExcel用ライブラリがフリーでも出ていますが、
ASPやASP.NETを利用することの多い私はExcelCreatorを何度か利用しています。
ExcelCreatorはWebサーバー上にOfficeをインストールせずにExcelファイルを
作成することができる優れものです。
また、既にExcelで作成されたファイルからデータを読み取ることもできます。
今回はこのExcelCreatorで少し困ってしまった点について、
解決方法も含めてご紹介します。
ExcelCreatorでは、セルに値を設定することも、計算式を設定することもできます。
元々用意してあったExcelの場合、式を埋め込むとその計算結果が表示されます。
そのまま保存した場合、保存された状態の値をExcelCreatorで読み取ることもできます。
しかし、ASPなどで式を埋め込んだ場合、一旦Excelでファイルを開いて計算させたうえで
保存しなければ、計算結果が取得できないという現象がありました。
式を埋め込んであった場合でも、一旦ExcelCreatorで開いて、式に使用する値を変更しても
計算結果が変わらないという状況です。
これは、ExcelCreatorではそもそもExcelを起動しているわけではないので、
計算式やワークシート関数など、Excel自体の機能は起動しなければ計算されないということのようです。
このため、計算式を埋め込む時には、初期値を一緒に設定するようにします。
Xls1.Cell("A1").Long = 1000
Xls1.Cell("A2").Func = "=A1+500" '←初期値なしになってしまう。
Xls1.Cell("A2").Func2 "=A1+500", 1500 '←初期値がセットされる。
ここで注意!
計算式をセットするだけなら、Funcプロパティを使用できましたが、
初期値を設定するFunc2はメソッドです。※イコール(=)は不要です。
ちなみに上記のコードはExcelCreator Ver3.0を対象としています。
Ver3.6や.NET用のVer5.0以降では、Funcメソッドのみに統一され、初期値も設定可能になったようです。
計算式を埋め込んでおくことができるExcelで初期値をいちいち設定するというのは
少し使い勝手が悪い印象を受けますが、そもそも式を埋め込んでおくようなケースであれば
一度開いて利用することを前提とすることもできるでしょう。
ツールの注意点を理解して、うまく利用していきたいですね。