2009-11-09 23 views
8

Estoy tratando de abrir un libro de Excel e intentar obtener una hoja de trabajo en él. Excelapp.workbooks.Open línea está lanzando una excepción, yaError al abrir un libro de Excel utilizando el código de C#

System.Runtime.InteropServices.COMException de HRESULT: 0x800A03EC en Microsoft.Office.Interop.Excel.Workbooks.Open

Aquí está mi código :

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 es mi ubicación de Excel. Me refiero a 2007 excel y agregué Microsoft.office.interop.excel de la versión 12.0.0.0.

+0

qué tipo de aplicación que es? aplicación de consola? asp.net/winforms? – shahkalpesh

+0

aplicación Asp.net – Amrita

Respuesta

0

¿Qué sucede si prueba System.Reflection.Missing.Value en lugar de Type.Missing?

Saludos,

M.

0

Qué clase está usando?

Microsoft.Office.Interop.Excel.ApplicationClass 

si esto vuelva a intentar cambiar a

Microsoft.Office.Interop.Excel.Application 
5

(Lo siento por responder a esta cuestión de edad, sino que es resultado de Google # 1 para este problema y la respuesta correcta es que falta).

El error se produce porque Excel cree que el Libro de trabajo se ha dañado. Al abrir el archivo de Excel, el último parámetro le dice a Excel cómo manejar esta situación. Pase Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData para indicarle que recupere los datos (esto abrirá una ventana emergente que le indicará al usuario que Excel trató de extraer los datos si el archivo está dañado).

Sin embargo, noté que este problema también puede producirse si el libro que está intentando abrir tiene una configuración regional diferente que su Excel (se guardó en una máquina usando otra configuración de idioma) O su sistema no tiene la configuración en-us conjunto.

Si bien esto es extremadamente estúpido, es fácil de superar. Para mí, la solución se ajusta a poco a la localización actual es-antes de abrir el archivo:

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; 

mérito es de this page

Cuestiones relacionadas