Microsoft Office Excel无法访问文件'c:\ inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'

Shu*_*ubh 44 c# excel export-to-excel excel-interop

我的代码如下: -

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;
Run Code Online (Sandbox Code Playgroud)

现在换行: -

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);
Run Code Online (Sandbox Code Playgroud)

它直接从visual studio(F5)执行,但是当我尝试用IIS访问它时它不会工作.引发错误如下: -

Microsoft Office Excel无法访问文件'c:\ inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'.有几个可能的原因:
•文件名或路径不存在.
•该文件正由另一个程序使用.
?您尝试保存的工作簿与当前打开的工作簿具有相同的名称.

我尝试过这样的工作: -

  • 文件夹和文件存在,允许访问IUSR _ ###(IIS用户)和文件所在文件夹中的ASPNET用户.
    • 在组件服务(DCOM)上,可以访问适当的用户.

我已经将所有权限授予模板(.xlsx)所在的文件夹

有什么建议??

Eri*_*not 109

试试这个:

  1. 创建目录

C:\ WINDOWS\Syswow64资料\ CONFIG\systemprofile \桌面

(对于64位Windows计算机上的32位版本的Excel/Office)或

C:\ WINDOWS\system32 \设置\ systemprofile \桌面

(对于32位Windows计算机上的32位版本的Office或64位Windows计算机上的64位版本的Office).

  1. 对于Desktop目录,为相关用户添加完全控制权限(例如,在Win7和IIS 7和DefaultAppPool中为用户IIS AppPool\DefaultAppPool设置权限).

原帖和答案:

  • 应该应该原来的.(http://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91) (2认同)
  • 有人对此行为有解释吗? (2认同)

Nik*_*hil 13

让我注意,在我的位置,添加c:\ windows\syswow64\config\systemprofile\desktop目录不起作用.

关键是WOW64代表Windows64上的Windows,这意味着它实际上适用于在64位操作系统上运行的32位程序.

由于我安装了64位Excel,因此正确的目录是c:\ windows\system32\config\systemprofile\desktop


dat*_*ung 10

就我而言,我按照此处提供的建议解决了问题。

脚步:

  1. 跑步dcomcnfg
  2. 转到控制台根 \Component Services\Computers\My Computer\DCOM Config\Microsoft Excel Application
  3. 右键单击“Microsoft Excel 应用程序”
  4. 选择属性
  5. 转到“身份”选项卡
  6. 选择交互式用户。

在步骤 2 中,如果您找不到该路径,请尝试运行mmc comexp.msc /32而不是dcomcnfg.