[C#]外部のxlsxファイルを開く[VS2022]

C#

xlsxファイルを開きたい!(内部的にではなく、外部的に!)

アプリのマニュアルがExcelで作られており、アプリ上のボタンを押すと、そのxlsxファイルをExcelで表示させたい。内部的にClosedXMLなどで開くのでなく、外部コマンド的にExcelを立ち上げ、そのファイルを表示して貰いたい。

外部のexeファイルを実行する方法は以下の通り、
 System.Diagnostics.Process.Start(“excel.exe”, “hogehoge.xlsx”);
で行ける…と思ったんだけど例外が起きた。
コマンドプロンプトで単に”excel.exe”って打つとExcelが起ち上がるのに、プログラムからだとフルパスのExcel.exeが必要らしい。

しかし、人によってはExcelのインストールフォルダが違うカモなので、固定指定できない。ならプログラム的に取得してしまおう。

//Excel実行ファイルの場所を取得
var xlApp = new Microsoft.Office.Interop.Excel.Application();
string excelFullPath = System.IO.Path.Combine(xlApp.Path, "EXCEL.EXE");   //フルパス作成
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

//Excelを起動し、xlsxファイルを表示する
System.Diagnostics.Process.Start(excelFullPath, "hoge.xlsx");

うん、Microsoft.Office.Interop.Excel使っちゃう。
xlApp.PathでExcelの置いてあるパスを取得して、Path.Combine(xlApp.Path, “EXCEL.EXE”);でPath合体。(なんでも良いけど、Path.Combine()って3つ以上引数使えて、全部合体してくれるのね。便利便利)

見事、Excelを立ち上げ、hoge.xlsxを表示してくれた。

COMの設定など

Microsoft.Office.Interop.Excelを使うためにCOMの設定が事前に必要です。
ソリューションエクスプローラーのプロジェクト名で右クリックして、「追加(D)」>「COM参照(C)」。

COMで、「Microsoft Excel 16.0 Object Library」にチェックを入れる(16はOffice365なので、人によってExcelのバージョンは違う)。チェック入れたら「OK」ボタンを押す。これで、Microsoft.Office.Interop.Excel関連が使用可能になる。

ダウンロード

コメント

タイトルとURLをコピーしました