C# Excelを遅延バインディングで操作する方法
いつもお世話になっております
只今C#でExcelファイルを出力するプログラムを作成しています。
以前やり方が分からずここに質問し、なんとかExcelに出力できるようになったのですが
Excelのバージョンが2007にしか対応していないことが分かり
遅延バインディング仕様に作り変えている最中です。
ところが、あと少しというところでクリアできない問題が2つ出てきたので、質問させていただきます。
1つは枠線を引く処理です。現在以下のように記述していますが
どうしても例外が発生してしまいます(0x800A03EC)
Type line = Type.GetTypeFromProgID("Excel.XlLineStyle.xlContinuous");
Type insidevertical = Type.GetTypeFromProgID("Excel.XlBordersIndex.xlInsideVertical");
Object tempA = objRange.GetType().InvokeMember("Borders", BindingFlags.GetProperty, null, objRange, null);
Object tempB = tempA.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, tempA, new object[] { insidevertical });
tempB.GetType().InvokeMember("LineStyle", BindingFlags.SetProperty, null, tempB, new object[] { line });
これがどう解決していいかわかりません・・・
遅延バインディングという手法も最近知ったばかりで、見よう見まねという状況です。
2つ目は、ファイル保存時の拡張子です。
現在は以下のように記述しています
(問題なく動作はしてくれます)
object[] mySave ={strFileName,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing};
objBook.GetType().InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, objBook, mySave);
以前はこのようにしていました
objBook.SaveAs(strFileName,
Excel.XlFileFormat.xlExcel8,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing);
保存する拡張子をxlsに統一したいのですが、遅延にした場合のファイル形式の指定方法がわかりません
Type.Missingにすると、実行環境にあるものに合わせた拡張子で保存されてしまい
Excel2007を使用している環境ではxlsxのファイルを作ってしまいます。
Type exFormat = Type.GetTypeFromProgID("Excel.XlFileFormat.xlExcel8");
のような感じで使えるかとも思ったのですが、できませんでした。。
わかる方がいましたら、よろしくお願いします。
開発環境
Vista
VisualStudio2008
.NET Framework 3.5
お礼
何度もありがとうございます データが入ってるのは会社のpcでなので今は何も出来ませんし、明日は出張で外出します。 月曜日に確認いたしますので、結果又メールします。