donpisci
donpisci

Reputation: 349

Microsoft.Office.Interop.Excel._Workbook.SaveAs() Exception: 0x800A03EC

I'm having issues with saving an excel spreadsheet when running on the server, when running locally, it works beautifully!

Has anyone ever come across this before or can point me in the right direction?

The app pool is running under the 'LocalSystem' identity.

Thanks!

I keep getting the following error/ stack trace:

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

Here is the code I use to try and save the excel doc:

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;
        }

Updated New Error:

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

On the following line:

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;
        }

Upvotes: 0

Views: 8532

Answers (2)

userfrog1440
userfrog1440

Reputation: 11

I have gone to hell and back with Microsoft.Office.Interop.Excel.Workbook and I found that the fix to not use the C:\ drive on my AWS windows system but the D:\ drive. Something about the how the C: drive was mounted was breaking the Microsoft.Office.Interop.Excel.Workbook SaveAs2 function call. I tried a lot of other common fixes found online but this was the only thing that worked in my case.

Upvotes: 0

Raj
Raj

Reputation: 361

1) start -> run -> mmc -32 -> press enter new window will open 2) file-> add remove snap in-> from avilable snap ins select component services -> press add> button 3) expand component services-> expand computers -> expand mycomputer -> expand DCOM config -> right click on Microsoft Excel application -> properties -> security tab 4) in launch and activation permission section -> click on customize radio button and then click on edit button 5) click add button -> add your user and provide all the access to your user and press ok button (service account with you are executing your app)

after this please create the below mention folder

If we are running in Windows Server 2008 64-bit/R2, · Navigate to C:\Windows\SysWOW64\config\systemprofile folder and create the following directory “Desktop” If we are running in Windows Server 32-bit · Navigate to C:\Windows\System32\config\systemprofile\Desktop folder and create the following directory “Desktop”

This will solve this issue.

Upvotes: 3

Related Questions