- PR -

C#でのExcel出力について

1
投稿者投稿内容
DEC
会議室デビュー日: 2004/08/09
投稿数: 10
投稿日時: 2005-01-28 13:58
開発環境
OS:WindowsXP Professional
Office2003
Excelのみ2000も入っています。

DataSetに取得した値をExcelに出力するプログラムなんですが、
参照の追加で、「Microsoft Excel 11.0 Object Library」を使用するとOffice2003の入ってる端末では動きますが、Office2000しか入っていない端末では動きません。

「Microsoft Excel 9.0 Object Library」を使用してプログラムを作成した場合は、Office2003だけが入っている端末もOffice2000だけが入っている端末でも動きます。

「Microsoft Excel 9.0 Object Library」を使えばOfficeがどのバージョンでも動作するのか?逆に「Microsoft Excel 11.0 Object Library」だとなぜOffice2000のExcelが動かないのかわかる方がいましたら教えて下さい。
xxななおxx
ベテラン
会議室デビュー日: 2005/01/18
投稿数: 61
お住まい・勤務地: 東京(練馬)
投稿日時: 2005-01-28 14:33
普通にExcelをインストールすると、
”Microsoft Excel xx.x Object”は、
Officeのディレクトリの下にきます。

さらに、
Excel2003なら->Microsoft Excel 11.0 Object
Excel2002なら->Microsoft Excel 10.0 Object
Excel2000なら->Microsoft Excel 9.0 Object

なので、普通にExcelそのものの互換を考えれば
Microsoft Excel 9.0 Object は、
Excel2000〜2003で、Excel2000以下では動かないと思いますが、
関数などをパラパラ見てみると、
メソッドプロパティ等も2002,2003で変更がされているものもあるようなので、
完全互換はしているか微妙な感じです。
現状動作している動作をきちんと確認して、
問題なければMicrosoft Excel 9.0 Object で、
使用環境をExcel2000以降と明確にされてはどうでしょうか?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-01-28 15:04
引用:

問題なければMicrosoft Excel 9.0 Object で、
使用環境をExcel2000以降と明確にされてはどうでしょうか?



または、遅延バインディングで作り直すと良いでしょう。
もしくは、ExcelCreater等サードパーティの製品を利用するように作り変えると良いでしょう。

#予断ですが、DataSetと出力設定を渡したら、Excelのファイルを作成してくれるクラスをライブラリとして作成しておくと楽ですよ。
#同じインターフェースで中身だけCOM用、ExcelCreater用と作っておくと、なお楽です。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
DEC
会議室デビュー日: 2004/08/09
投稿数: 10
投稿日時: 2005-01-28 15:13
xxななおxxさん
NAL-6295さん
ご返答ありがとうございます。
DEC
会議室デビュー日: 2004/08/09
投稿数: 10
投稿日時: 2005-01-28 15:16
間違えて送ってしまいました。

遅延バインディングとはどのようなものなのですか?
知識不足で申し訳ないのですが教えて下さい。
ExcelCreaterについて参考になるサイト等がございましたら
教えていただけないでしょうか?
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-01-28 15:22
違ってたらごめんなさ〜い>ALL

プログラムの起動時間を短縮するために、共有ライブラリ内のルーチンは参照時までバインドされません(データ項目は、常にプログラムの起動時にバインドされます)。このように、共有ライブラリ・ルーチンの遅延バインディングによって、プログラムの実行時間にまたがってバインディングのオーバーヘッドが分散され、実行頻度の低い多数の参照が含まれるプログラムの場合は特に有効です。実際には、遅延バインディングはデマンド・ロードと同じことです。

で良いのかな?(HPのサイトに一番わかりやすそうな文章で載っていたので)
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-01-28 15:40
遅延バインディングについては、こちらのスレッドが参考になると思います。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-01-28 15:48
一つだけ言い忘れた事が・・・

遅延バインディングをC#でやると大変なので、そこだけVB.NETで記述した方が良いです。
で、
遅延バインディング(実行時バインディング)の説明は・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbls7/html/vblrfVBSpec9_8.asp
で、
C#での例は・・・
http://support.microsoft.com/default.aspx?scid=kb;ja;302902
にあります。
ExcelCreatorについては
http://www.adv.co.jp/
です。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
1

スキルアップ/キャリアアップ(JOB@IT)