- ベストアンサー
C# Excel遅延バインディングで操作の方法とクリアできない問題
- C#でExcelファイルを出力するプログラムを作成している際に、バージョンの制約に遭遇し、遅延バインディング仕様に作り変えている最中です。
- 解決できない問題が2つあります。1つ目は枠線を引く処理で発生する例外(0x800A03EC)の解決方法が分からず困っています。
- 2つ目はファイル保存時の拡張子の指定方法です。遅延バインディングを使用する場合に、保存する拡張子を統一したいのですが、方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excel 2000/XP/2003には,xlExcel8 (=56) は存在せず,xlWorkbookNormal (=-4143) を使います。 遅延バインドするのであれば,整数値をそのまま付けばよいです。
その他の回答 (1)
- Yune-Kichi
- ベストアンサー率74% (465/626)
事前バインディング時に列挙型になっている物は,整数型として扱えます。 私が現在やっているプロジェクトでは, ・インターフェイス用のプロジェクト ・ここにIApplicationやIWorkbookといった,バージョンに依存せず使うためのインターフェース ・共通で使うための列挙型 (2007のPIAからリフレクションで取得) ・各バージョン用のプロジェクト ・各バージョンのIAやPIAへの参照を持つ ・インターフェイス用のプロジェクトのインターフェイスを実装。内部はほぼIA/PIAへの委譲のみ ・列挙値は名前を使って変換 ・パラメータが必要数より多い場合は無視 ・全体をとりまとめるためのプロジェクト ・バージョンチェックを遅延バインディングで実行 ・バージョンによって,各バージョン用のプロジェクトをリフレクションで実行時ロード という方法を使っています。 各バージョン用の物がコピペになるのが悲しいのですが,バージョンごとの差異も吸収できるので,実用にならない,ということはないと思います。 どちらかというと,それだけのバージョンのExcelを入手できるかにかかってきますが……。
お礼
2度も回答ありがとうございます。 整数を調べて実装したら無事動くようになりました! 思わず万歳しそうになりましたw なるほど、そういうふうに分けて利用する方法もあるのですね 今度試してみて、部品化出来るようにしていけたらと思います。 でも、遅延バインディングを選択せずにExcelを扱う必要がある時っていうのはどういう時なのでしょうか? 今回のことで遅延万歳状態になりつつあるのですがw メリットやデメリットなんかも教えてもらえるとうれしいです。 Excelにもいろいろとバージョンがあるんですよね、まだ把握しきれていないので、今回の壁にぶつかったことで色々と目が覚めました。 少しずつ色々なことが出来るようになると本当にプログラミングは楽しいですね。 これからもがんばります。 ありがとうございました!
お礼
素早い回答ありがとうございます 拡張子の問題が解決しました! 数値での指定ができるとは驚きです。 本当にありがとうございます! あとは枠線・・・ 補足なのですが、枠線指定の部分は Type.GetTypeFromProgID("Excel.XlLineStyle.xlContinuous"); などの部分がどうやらnullとして返されてるようです。 そのあたりが解決すれば上手く引けそうな気がします・・・ ここらへんも数値で指定とかができるのでしょうか?