c# - examples - microsoft.office.interop.excel download
HRESULT: 0x800A03EC en Worksheet.range (17)
EDITAR: ¡ESTO ES MUCHO MEJOR! No necesitas esa vieja función, lo siento. Solo haz lo siguiente:
Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])];
Eso debería funcionar como un encanto. Y para referencia futura, coloque el código relevante que está utilizando dentro de su pregunta. No hagas que la gente lo pida en los comentarios. Imagino que es por eso por lo que te votaron negativamente.
Recibo HRESULT: 0x800A03EC en el método Worksheet.range. El número de filas es más de 70K. Office 2007.
Código:
Microsoft.Office.Interop.Excel.Range neededRange
= currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];
Aquí mi recuento de filas es más de 65530. Se rompe en esta función. He observado que se rompe solo cuando el recuento de filas supera los 65530.
No entiendo el problema. Pero aquí está lo que resolvió mi problema.
Vaya a Opciones de Excel> Guardar> Guardar archivos en este formato> Seleccione "Libro de Excel (* .xlsx)". Anteriormente, mis WorkBooks se estaban abriendo en [Modo de compatibilidad] y ahora se están abriendo en modo normal. La función de rango funciona bien con eso.
Este problema se produce si está utilizando una hoja compatible con versiones anteriores (a .xls) en lugar de .xlsx
Para permitir que las hojas se abran en la versión de pre office 2007, no puede contener más de 65k filas. Puedes verificar el número de filas en tu hoja usando ctrl + flecha abajo hasta que toques la parte inferior. Si intentas obtener un rango mayor que ese número de filas, creará un error
Simplemente, el archivo de Excel está dañado. La mejor solución es cambiar / reparar el archivo. (Hacer una copia del archivo existente y cambiarle el nombre)
Esto también podría deberse a que no tiene espacio en la partición en la que está guardando.
Revisé mi HD y pensé que estaba al máximo. Mover algunos archivos innecesarios a una partición diferente resolvió mi problema.
Mirando las diversas respuestas anteriores, y basándose en mi propia experiencia reciente (obtuve este código de error haciendo algo completamente ajeno a esto - estableciendo Application.Calculation
) concluyo que el mismo código de error se usa para indicar múltiples problemas no relacionados. Así que, @Garreh, probablemente deberías estar haciendo una nueva pregunta (no es que alguien pueda ayudar basándose únicamente en el código de error). He visto lo mismo trabajando con la interoperabilidad de Word desde C #, donde parece que se usa el mismo HRESULT
para casi cualquier tipo de error. Nunca encontré ninguna documentación satisfactoria de Microsoft sobre lo que podrían significar los códigos.
Estábamos recibiendo lo mismo. La excepción fue
Stacktrace: en 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 Text VisualLayout, Object Local) `
con una excepción interna de
Excepción de HRESULT: 0x800A03EC 2012-11-01 10: 37: 59`
Pudimos resolver el problema con la información de esta publicación , que cito aquí por conveniencia ...
- Inicie sesión en el servidor como administrador.
- Ir a "Inicio" -> "Ejecutar" e ingresar "taskmgr"
- Vaya a la pestaña de proceso en el administrador de tareas y marque "Mostrar procesos de todos los usuarios"
- Si hay entradas de "Excel.exe" en la lista, haga clic con el botón derecho en la entrada y seleccione "Terminar proceso"
- Cerrar el administrador de tareas.
- Vaya a "Inicio" -> "Ejecutar" y escriba "services.msc"
- Detenga el servicio automatizando Excel si se está ejecutando.
- Vaya a "Inicio" -> "Ejecutar" y escriba "dcomcnfg"
- Esto abrirá la ventana de servicios de componentes, expande "Console Root" -> "Computers" -> "DCOM Config"
- Busque "Aplicación de Microsoft Excel" en la lista de componentes.
- Haga clic derecho en la entrada y seleccione "Propiedades"
- Vaya a la pestaña "Identidad" en el cuadro de diálogo de propiedades.
- Seleccione "El usuario interactivo".
- Haga clic en el botón "Aceptar".
- Cambiar a la consola de servicios
- Comience el servicio automatizando Excel
- Pruebe su aplicación nuevamente.
Me encontré con este problema.
Descubrí que en algún lugar de mi código estaba pidiendo que cuente comenzando desde 0 (como lo haría en un código C #).
Resulta que el conteo de Excel comienza en 1.
Tuve un error con el código exacto cuando intenté asignar una matriz de celdas al rango. Valor. En mi caso, fue el problema con el formato de datos incorrecto. El formato de datos de la celda se estableció como FECHA pero el usuario cometió un error y en lugar de "20.02.2013" ingresó la fecha "20.02.0213". El objeto COM de Excel se negó a tomar el año ''0213'' y lanzó la excepción con este error.
También me enfrenté al mismo problema cuando estaba desarrollando una aplicación que exporta los contenidos del proyecto al archivo Excel.
No pude encontrar la resolución en los foros para mi problema, luego verifiqué la capacidad máxima de Excel y encontré el enlace a continuación que dice
"Tamaño de hoja de trabajo 1,048,576 filas por 16,384 columnas" y este era el problema en mi caso, yo estaba exportando más que esas filas. Consulte el enlace a continuación para obtener detalles
Saludos Prashant Neve
Solo para tu información, recibí el error al intentar aplicar el estilo de fila ...
wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
Tuve el mismo código de error cuando ejecuté la siguiente declaración:
sheet.QueryTables.Add("TEXT" & Path.GetFullPath(fileName), "1:1", Type.Missing)
El motivo era el punto y coma faltante (;) después de "TEXTO".
Aquí está la correcta:
sheet.QueryTables.Add("TEXT;" & Path.GetFullPath(fileName), "1:1", Type.Missing)
Recibí esta excepción porque escribí:
ws.get_Range("K:K").EntireColumn.AutoFit();
ws.get_Range("N:N").EntireColumn.AutoFit();
ws.get_Range("0:0").EntireColumn.AutoFit();
¿Ves un error? Sugerencia: Excel acepta la indexación desde 1, pero no desde 0 como lo hace C #.
No puedo responder / endosar esta respuesta , por lo que publico aquí:
De hecho, el formato de los rangos de origen / destino al mover datos de un rango a otro también podría causar este error.
En mi caso, el rango que quería copiar contenía una columna con formato de fecha, y la columna contenía una celda con un valor de fecha no válido (ni siquiera se formateó debido a su valor, que era un número entero negativo). Por lo tanto, la operación de copia entre los dos intervalos se detenía en dicha celda produciendo el mismo mensaje de error discutido aquí.
La solución en mi caso fue usar Range.Value2 en lugar de Range.Value , lo que provocó que Excel omitiera formatear la celda como una fecha (más detalles aquí ). Sin embargo, esto hará que sus columnas de fecha y hora se muestren como números enteros y decimales. Sin embargo, podrá cambiar los formatos a los deseados si sabe dónde esperar los valores de fecha y hora configurando su propiedad Range / Column / Cell.NumberFormat en consecuencia.
Recibí este error porque traté de cambiar el nombre de una hoja con demasiados caracteres
Estoy de acuerdo con la publicación de Hugh W "Concluyo que el mismo código de error se usa para indicar múltiples problemas no relacionados"
Otras publicaciones no han mencionado que este error se produce con frecuencia si la hoja de cálculo está bloqueada. Si bien no he probado todos los escenarios, parece que todo lo que no se puede hacer en Excel cuando se bloquea una hoja de cálculo arroja este error si intenta hacerlo a través de VSTO / Com mientras la hoja está bloqueada. EG Cambiar cualquier artefacto de estilo (fuente, tamaño de fuente, color, subrayado), cambiar la Validación de Excel, cambiar el ancho de las columnas, alturas de fila, fórmulas
Este tipo de error también se produce cuando intenta abrir su hoja de Excel y si aparece un mensaje de error. simplemente puede decir cuándo su archivo de Excel está dañado.