0

我在服务器上运行时保存 Excel 电子表格时遇到问题,在本地运行时,它运行良好!

有没有人遇到过这个问题或者可以指出我正确的方向?

应用程序池以“LocalSystem”身份运行。

谢谢!

我不断收到以下错误/堆栈跟踪:

Error saving the excel sheet: 
Exception from HRESULT: 0x800A03EC   at     Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object FileFormat, 
Object     Password, Object WriteResPassword, Object ReadOnlyRecommended, Object 
CreateBackup,     XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object 
AddToMru, Object     TextCodepage, Object TextVisualLayout, Object Local)
   at MiFiveDayReport.ExportToExcel.SaveAs(String filepath, XlFileFormat type) in
G:\Development\MI Development\Technical     Development\MIPortal\MIPortal\Old_App_Code\ExportToExcel.cs:line 411

这是我用来尝试保存 excel 文档的代码:

try
        {
            if (log.IsInfoEnabled) log.Info("Saving...");
            if (string.IsNullOrEmpty(filepath))
                //Sets the filepath as the default
                excelBook.SaveAs(this.filepath, type);
            else
                excelBook.SaveAs(filepath, type);
            if (log.IsInfoEnabled) log.Info("Saved!");
            success = true;
        }
        catch (Exception ex)
        {
            //SendEmail e = new SendEmail("Error saving excel sheet: " + ex.Message);
            //SendEmail e1 = new SendEmail("Error saving excel sheet: " + ex.StackTrace);
            if (log.IsErrorEnabled) log.Error("Error saving the excel sheet: "
                                     + ex.Message
                                     + ex.StackTrace);
            throw;
        }

更新的新错误:

Error creating excel application: Retrieving the COM class factory for component with
CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 
80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, 
Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at MiFiveDayReport.ExportToExcel..ctor(String filepath) in G:\Development\MI Development\Technical Development\MIPortal\MIPortal\Old_App_Code\ExportToExcel.cs:line 94

在以下行:

try
        {
            if (log.IsInfoEnabled) log.Info("Creating an excel application...");
            excelApp = new Application();
            if (log.IsInfoEnabled) log.Info("Excel application created");
        }
        catch (Exception ex)
        {
            if (log.IsErrorEnabled) log.Error("Error creating excel application: " + ex.Message + ex.StackTrace);
            throw;
        }
4

1 回答 1

1

1) 开始 -> 运行 -> mmc -32 -> 按 Enter 新窗口将打开 2) 文件-> 添加删除管理单元-> 从可用管理单元中选择组件服务 -> 按添加> 按钮 3) 展开组件服务->展开计算机 -> 展开我的电脑 -> 展开 DCOM 配置 -> 右键单击​​ Microsoft Excel 应用程序 -> 属性 -> 安全选项卡 4) 在启动和激活权限部分 -> 单击自定义单选按钮,然后单击编辑按钮 5) 单击添加按钮->添加您的用户并为您的用户提供所有访问权限,然后按确定按钮(您的服务帐户正在执行您的应用程序)

在此之后,请创建下面提到的文件夹

如果我们在 Windows Server 2008 64 位/R2 中运行, · 导航到 C:\Windows\SysWOW64\config\systemprofile 文件夹并创建以下目录“桌面”如果我们在 Windows Server 32 位中运行 · 导航到 C :\Windows\System32\config\systemprofile\Desktop 文件夹并创建以下目录“Desktop”</p>

这将解决这个问题。

于 2017-01-28T08:40:05.223 回答