【问题标题】:Microsoft Office Interop Excel doesn't save in Windows server 2008Microsoft Office Interop Excel 不保存在 Windows Server 2008 中
【发布时间】:2013-08-27 11:19:08
【问题描述】:

我正在使用 Microsoft Office Excel Interop 在 ASP.NET C# 中创建一个 excel 文件。当我在 Visual Studio 2010 中运行应用程序时,一切都成功了。我已经在我自己的 IIS 服务器上发布了我的 Web 应用程序,没关系。但是当我在 Windows Server 2008 中发布应用程序时,就检测到了问题。 我在网上找了很多,我做了以下,但问题仍然没有解决:

  1. 我已将 Application Pool Identity 设置为 LocalSystem。在运行 -> mmc -32 -> 组件服务 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序 -> 右键单击​​ -> 属性窗口:在 Identity 选项卡中,我检查了所有单选此窗口中的按钮。

  2. 我已将 Application Pool Identity 设置为 NetworkService,并再次检查了所有以前的单选按钮。

  3. 在运行->mmc -32 -> 组件服务 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序 -> 右键单击​​ -> 属性窗口:在 安全 选项卡中:我给了本地启动本地激活,适用于INTERACTIVE、NETWORK SERVICE、IIS_IUSRS用户。

    这是我使用的代码Interop Excel

Excel.Application xlApp = new Excel.Application();
object misValue = System.Reflection.Missing.Value;

Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
  
Workbook.SaveAs(Server.MapPath("DownloadFolder\\" + fileName + "_siyahi.xls"));

【问题讨论】:

  • 那里有几个地方可能会在 Web 应用程序中引发错误。哪一行给出了异常,你可以发布异常吗?另外,您是否检查过运行应用程序的帐户是否具有写入文件夹/文件的适当文件权限?
  • 我对 iis_iusrs、myCmputer\\users 用户拥有完全控制权限来写入文件夹。当我将 NetworkService 身份设置为应用程序池时,会出现以下错误“Microsoft Excel 无法打开或保存更多文档,因为没有足够的可用内存或磁盘空间”。
  • 您可能想阅读this article,了解有关 Interop 和 ASP.NET 的问题。引用:“微软目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。”

标签: c# asp.net excel office-interop


【解决方案1】:

我发现了我的问题。在我的 Windows Server 中,系统区域设置 不是美国,我在代码中设置了 worksheet.cells.NumberForm="0.00"

xlWorkSheet.Cells[rowNumber, 4].NumberFormat = "0.00";

服务器不知道这种数字格式。我已将 Format 更改为 English (United States) 并将 Current location 更改为 United States,我的问题就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    相关资源
    最近更新 更多