不访问IIS中的xls文件

时间:2019-08-06 08:43:15

标签: c# asp.net excel permissions netoffice

我正在尝试打开xls文件并使用Web api 2服务转换为pdf。 当我在vs 2013中启动服务项目时,everinging效果很好,但是当我将服务发布到iis 8.0并尝试打开excel文件时,出现错误:

错误:

  

调用的目标已引发异常。       在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,   Int32文化,String [] namedParameters)       在System.RuntimeType.InvokeMember(字符串名称,BindingFlags bindingFlags,活页夹装订器,对象目标,Object []提供的Args,   ParameterModifier []修饰符,CultureInfo文化,字符串[]   namedParams)       在NetOffice.Invoker.MethodReturn(COMObject comObject,字符串名称,Object [] paramsArray)


此行错误:

var workbook = excelApplication.Workbooks.Open(excelLocalOutput, 0, false, 5, 123, 123, true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

我试图解决的问题:

  

我向Microsoft Excel授予了“网络服务”和“ IUSRS”权限   申请

     

我为应用程序池提供了“网络服务”

     

我为发布的文件夹提供了“网络服务”

1 个答案:

答案 0 :(得分:1)

  

TL; DR; NetOffice是执行您想要的错误的库。它不打算在服务器上使用,您不应该在服务器上安装Excel


NetOffice是一个COM Interop库,通过它可以与运行Windows客户端的用户计算机上安装的Excel进行交互。

Microsoft不支持Windows Server上的Excel ,如其著名的KB257757-Considerations for server-side Automation of Office所述。

要在服务器上读取Excel文件,您应该使用可以直接读取/写入Excel文件的工具,无需则要求在服务器上安装Excel。

如果您正在读取Excel 2017+文件(即.xlsx),则可以使用Open XML SDK或任何其他OpenXml兼容的库,例如ExcelDataReader或{ {3}}。

如果您需要读取较旧的Excel文件(即.xls),则可以使用ClosedXMLExcelDataReader或类似的库来读取旧的Excel二进制文件格式。