私は次のようにコードを持っています:-
Microsoft.Office.Interop.Excel.Application oXL = null;
Microsoft.Office.Interop.Excel.Sheets sheets;
Application Excel = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks.Add(System.Reflection.Missing.Value);
/*
* Here is the complete detail's about Workbook.Open()
*
* Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format,
* Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin,
* Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
*/
Workbook workbook = Excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
sheets = workbook.Worksheets;
さて、次の行について:-
workbook = Excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
Visual Studio(F5)から直接実行されますが、IISでアクセスしようとすると動作しません。次のようにエラーをスローします。
Microsoft Office Excelは、ファイル 'c:\ inetpub\wwwroot\Timesheet\App_Data\Template.xlsxにアクセスできません。考えられる理由はいくつかあります。
•ファイル名またはパスが存在しません。
•ファイルは別のプログラムで使用されています。
•保存しようとしているワークブックの名前は、現在開いているワークブックと同じです。
私は次のように回避策を試しました:-
- フォルダーとファイルが存在し、IUSR _ ###(IISユーザー)およびファイルがあるフォルダー内のASPNETユーザーにアクセスを許可します。
- コンポーネントサービス(DCOM)で、適切なユーザーにアクセス権を付与します。
テンプレート(.xlsx)が存在するフォルダーに対するすべてのアクセス許可を既に付与しています
助言がありますか??
これを試して:
C:\ Windows\SysWOW64\config\systemprofile\Desktop
(64ビットWindowsコンピューター上の32ビットバージョンのExcel/Officeの場合)または
C:\ Windows\System32\config\systemprofile\Desktop
(32ビットWindowsコンピューター上の32ビットバージョンのOfficeまたは64ビットWindowsコンピューター上の64ビットバージョンのOfficeの場合)。
元の投稿と回答:
私の代わりにc:\ windows\syswow64\config\systemprofile\desktopディレクトリを追加しても機能しなかったことに注意してください。
重要なのは、WOW64はWindows64上のWindowsを表しているということです。つまり、64ビットOS上で実行される32ビットプログラムに実際に適用されます。
64ビットのExcelがインストールされているため、適切なディレクトリはc:\ windows\system32\config\systemprofile\desktopであることが判明しました。
Eric Bonnotの回答に何かを追加したいと思います:PowerPoint PIAで管理者以外のユーザーがいるIISサーバー。
このファイルにメディア(たとえば画像)が含まれている場合、pptxファイルを開くことができないことに気付きました。
「ハッキング」は、Windowsユーザー(PIAを使用するユーザー)にもsystemprofile/AppDataディレクトリーの権限を追加することでした。
お役に立てれば
私の場合、提供された提案に従って here を実行し、問題を解決しました。
手順:
dcomcnfg
を実行します手順2で、そのパスが見つからない場合は、mmc comexp.msc /32
の代わりにdcomcnfg
。
私は以前にこの問題を試みてから解決しました。
溶液:
特定のフォルダー(サブフォルダーとファイル)に完全なアクセス許可を設定し、正常に動作することを確認しました。
WCFをWindowsサービスにラップしました。デスクトップフォルダーを作成することで、1台のコンピューターでは解決できましたが、別のコンピューターでは解決できませんでした。
最終的に私の問題は、マシンのアクティブなユーザーの下でWindowsサービスが実行されなかったことです。マシン上でアクティブなユーザーの下で実行されるようにサービスを構成すると、これまでのところこの問題は解決しました。
の組み合わせのみ
私のためにそれを得ました。
この記事では、完全なソリューションを紹介しました。 Excelファイルにアクセスできません