レポートを生成する Windows サービスを開発しています。このレポートにはテンプレートがあります。このテンプレートは、Excel ファイルで作成されます。このファイルは、出力フォルダーにコピーされます。
開発中にコンソール アプリケーションのようにサービスを起動しましたが、このファイルに問題なくアクセスできました。
次に、サービスインストーラーを用意しました。サービスはLocal System
アカウントの下にインストールされます。したがって、この Excel テンプレート ファイルはコンテンツとしてマークされ、実行可能ファイルと共にインストール ディレクトリにコピーされます。
しかし、サービスが開始されると、Excel はこのファイルにアクセスできないように見えます。サービスは にインストールされc:\Program Files (x86)\Our Company\Service Name\
ます。ターゲット OS は Windows Server 2008 です。テスト中に Windows 7 を使用し、同じ問題に遭遇しました。
次のコードを使用して、Excel にアクセスします。
using Excel = Microsoft.Office.Interop.Excel;
//...
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
//the following line throws an exception
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(@"path");
また、Excelテンプレートファイルを一時ディレクトリ(サービスに書き込み権限がある場所-これはテスト済み)にコピーしようとし、そこから開こうとしましたが、成功しませんでした(このバリアントはコンソールアプリケーションでうまく機能します良い)。
エラーメッセージは次のとおりです。
Microsoft Office Excel はファイル /path/ にアクセスできません。いくつかの理由が考えられます。
1. The file name or path does not exist. 2. The file is being used by another program. 3. The workbook you are trying to save has the same name as a currently open workbook.
Windows サービスがこの Excel テンプレート ファイルにアクセスできるようにするにはどうすればよいですか? それとも別の代替手段がありますか?