Error while opening an excel workbook using C# code

exception from hresult: 0x800a03ec at microsoft office interop excel workbooks open
system runtime interopservices comexception exception from hresult: 0x800a03ec
how to open excel file in asp net using c#
create excel file in c# using interop
workbooks open c# error
c# open excel workbook
read excel file in c#
c# open excel file programmatically

I'm trying to open an excel workbook and trying to get a worksheet in it. Excelapp.workbooks.Open line is throwing an Exception as

System.Runtime.InteropServices.COMException from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel.Workbooks.Open

Here is my code:

Excel.Application excelApp = new Excel.ApplicationClass();
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(strWBPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, true);

StrWbPath is my Excel location. I'm refering to 2007 excel and added Microsoft.office.interop.excel of version 12.0.0.0.


(Sorry for answering this old question, but it's google result #1 for this problem and the correct answer is missing).

The error occurs because excel thinks the Workbook has been corrupted. When opening the Excel file, the last parameter tells excel how to handle this situation. Pass Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData to instruct it to retrieve the data (This will open a popup telling the user excel tried to extract the data if the file is corrupted).

However, I noticed this problem can also be caused if the workbook you are trying to open has a different locale than your excel (was saved on a machine using another language setting) OR your system not having the en-us locale set.

While this is extremely stupid, it's easy to overcome. For me the solution was to just set the current locale to en-us before opening the file:

static System.Globalization.CultureInfo oldCI;
oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
xlWorkBook = xlApp.Workbooks.Open(filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData);
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;

credit goes to this page

C# coding,get error message when opening an excel file , Hello~ I am running a program to write an excel file, using C#, with Microsoft.​Office.Interop.Excel. When I tried to open an xls file, program  Yet if you open the file in Excel manually, it is not corrupt. It turned out that for those files, you must not supply the CorruptedLoad parameter. Then it opens successfully. So in the end I adjusted my code to first try without any CorruptedLoad parameter, and only if that returns the exception, then try passing xlRepairFile for that parameter.


What if you try System.Reflection.Missing.Value instead of Type.Missing?

Regards,

M.

[Solved] C# open excel to read error, Do you have privilege to access to the Excel file? Cannot see how you get the name of the file into the textbox, but, if all that is in the text box is  I have an Excel file with 5 worksheets and I want with c# code to open it and when it is opened I want the sheet number 3 to be activated. Excel.Workbook workbook


Which class are you using?

Microsoft.Office.Interop.Excel.ApplicationClass

if this then try changing it to

Microsoft.Office.Interop.Excel.Application

Opening and Navigating Excel with C#, Excel.Workbook newWorkbook = excelApp.Workbooks.Add();. The preceding code opens a blank workbook with one sheet. The .Add method  How to disable the prompt dialog when I save the excel file created using C# while conflict occurs? 1 In vb.net when calling a method from an instance of Outlook.Application, a pop up halts code execution


In case it helps someone else, I lost tons of time on this one. I was passing Microsoft.Office.Interop.Excel.XlCorruptLoad.xlRepairFile for the CorruptedLoad parameter for all files, thinking it meant "open the file, and if it's corrupt, attempt a repair". This worked for most files.

However, for some files, I was still getting the exception (Exception from HRESULT: 0x800A03EC). Yet if you open the file in Excel manually, it is not corrupt.

It turned out that for those files, you must not supply the CorruptedLoad parameter. Then it opens successfully. So in the end I adjusted my code to first try without any CorruptedLoad parameter, and only if that returns the exception, then try passing xlRepairFile for that parameter. I also adjusted my understanding of that parameter to mean "open and repair this file regardless of whether it's corrupt".

How to diagnose Excel file corruption and repair workbooks, Developers usually experiment using a trial and error approach, while trying to If a user opens a corrupted workbook in Excel 2013, while being oblivious that As a result the user may try to troubleshoot VBA code that isn't 'broken' in the  How to open an Excel file in C# The following section explains how to open and read an Excel file through C#. For open or read an Excel file in C# , first you have to add the Microsoft Excel 12.0 Object Library in you project. Create a new project and add a Command Button to the Form.


How to Open Excel File in C#, In this tutorial, we will show you how to open an excel file in C# application F5 to execute Duration: 2:14 Posted: Aug 16, 2013 You must include a namespace to use Excel in your C# program. You have to use Visual Studio's GUI to add an assembly to your program to use Excel interop. Use the Add Reference command for this. Tip: Add the Microsoft.Office.Interop.Excel assembly by going to Project -> Add Reference.


Excel cannot open the file '(filename)'.xlsx' error, To find this option in Windows 7, follow these steps: Open the Control panel> Visit Default Programs> Check Associate a file type with a program. To access the object model from Visual C# .NET, you can set a project reference to the type library. This article demonstrates how to set the proper project reference to the Excel type library for Visual C# .NET and provides sample code to automate Excel. Create an Automation Client for Microsoft Excel. Start Microsoft Visual Studio .NET.


Use Excel with earlier versions of Excel - Excel, In Excel 2010 and later, when you open a workbook that was created in Excel 97-​2003, Formula references to data in this region will return a #REF! error. For example, you could apply conditional formatting instead of or in addition to the  If the workbook has not been saved before, you should save the workbook by specifying a path. Without an explicit path, Microsoft Office Excel saves the file in the current folder with the name it was given when it was created. You can also save a copy of the workbook without modifying the open workbook in memory.