【この記事はまもなく削除します。(コメント欄参照)】
【って削除しようと思いましたが、これも一つの教訓であり、アンチパターンとして情報ではあるので残すことにしました。】
【結論として、WorkBook.Open()は第二引数以降は省略できるということでした。それを知らずに以下の記事を書きました。】
やあ子供たち。今日はC#でExcelファイルを開くお話だよ。無料で入手可能なVisualStudio2013ExpressEditionでさえ、Excelのインストールされた環境であれば、誰でもOfficeInteropプログラミングを楽しむことができるよ。ではいってみよう。
OfficeInterOpのAPIで、Excelファイル(.xlsx)を開くためのAPIが用意されているのだけれども、とても引数が多く、さらっと書けるものではない感じだ。なので作業効率やソース可読性UPのためにも、おじさんは早速ラッパー関数を作ってみたので紹介するぞ。
public bool lcOpenWorkbook( Excel.Application app, string filename, out Excel.Workbook wb ) { // ワークブックを開く。 bool isOpened = true; try { wb = (Excel.Workbook)( app.Workbooks.Open( filename, Type.Missing, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing )); } catch( Exception ) { isOpened = false; wb = null; } return isOpened; }
いかがだろうか。かなり大発明な感じじゃないかこのラッパー関数は。かなり便利な感じで使ってもらえるものと自負しているよ。これの使い方は、ずばりこんな感じだ。
// ●名前空間の使用宣言 using Excel = Microsoft.Office.Interop.Excel; // ●(これに加えて参照設定で // Microsoft.Office.Core や、 // Microsoft.Office.Interop.Excel // といったコンポーネントを追加するのを忘れずにな。 Excel.Application app = new Excel.Application(); Excel.Workbook wb; { string file_name = @"C:\Users\xxx\Desktop\yasai1.xlsx"; app.Visible = true; // ワークブックを開く。 if(!lcOpenWorkbook(app, file_name,out wb))// ★ { // エラーで開けなかった場合の処理 } }
見てくださいこの簡単さ。★のところのたった1行でxlsxを開いているね。どうですかすごい便利でしょ。プログラムを実行すると、指定したExcelファイルがちゃんと開けただろうか。
それでは今日はこんなところで失礼するぞ。チャオ!。