Saltar al pie de página
USANDO IRONXL

Liberar objeto de Excel en C# | Detener procesos de Excel persistentes con IronXL

Liberar el objeto Excel en C#: Detenga los procesos de Excel que se prolongan con IronXL: Imagen 1 - Liberar el objeto Excel en C#: Comparación de dos métodos

Trabajar con archivos de Microsoft Excel en aplicaciones C# a menudo conduce a un problema frustrante: procesos de Excel que se niegan a cerrarse. Es posible que descubras que se acumulan múltiples instancias de EXCEL.EXE en el Administrador de tareas, consumiendo memoria mucho después de que tu código haya terminado de ejecutarse. Esta guía explica por qué ocurre esto con la interoperabilidad tradicional de Excel y muestra cómo IronXL elimina por completo estos problemas con los objetos COM, lo que le ahorra tener que lidiar con código de limpieza complejo y fugas de memoria en producción.

La causa raíz radica en cómo .NET Framework interactúa con Microsoft Office a través de referencias COM. Cuando se escribe código utilizando Microsoft.Office.Interop.Excel, cada objeto de aplicación, libro y hoja de cálculo de Excel crea objetos COM que requieren una limpieza explícita. Si falta incluso una sola llamada de liberación —o si se utilizan patrones con dos puntos como app.Workbooks.Open()— quedan referencias huérfanas que impiden la Terminación del proceso de Excel.

Empiece con IronXL ahora.
green arrow pointer

¿Por qué los procesos de Excel permanecen en el Administrador de tareas después de cerrarlo?

La aplicación Excel no sufre terminación porque los recuentos de referencias de objetos COM no se decrementan correctamente. Cada vez que el código accede a una aplicación, un libro o una hoja de cálculo de Excel, el tiempo de ejecución crea un Runtime Callable Wrapper (RCW) que contiene un recuento de referencias al objeto COM subyacente. El recolector de basura de .NET no puede liberar estos objetos de interoperabilidad hasta que todas las referencias se hayan liberado explícitamente mediante Marshal.ReleaseComObject.

Entre los errores comunes que provocan procesos prolongados se incluyen:

  • Uso de dos puntos en cadenas de propiedades como app.Workbooks.Open() (lo que crea objetos temporales ocultos)
  • Iteración con un bucle foreach sobre colecciones COM (lo que genera enumeradores no liberados)
  • Olvidarse de llamar a Quit() en el objeto de aplicación de Excel
  • Captura de excepciones sin limpieza en un bloque finally

En versiones anteriores de Microsoft Office (2000-2003), si no se liberaban los objetos de la API de Office, la ventana principal de Excel se bloqueaba indefinidamente. Aunque las versiones posteriores son más tolerantes, el proceso de Excel sigue acumulándose en el Administrador de tareas, lo que provoca fugas de memoria y posibles problemas de bloqueo de archivos con tus hojas de cálculo de Excel.

El problema se vuelve especialmente grave en aplicaciones del lado del servidor o programadas, donde los procesos se acumulan con el tiempo hasta que el servidor se queda sin memoria. Entender por qué ocurre esto es el primer paso para elegir la herramienta adecuada para el trabajo.

¿Qué ocurre en la capa COM?

Cada acceso a una propiedad de un objeto COM de Excel puede crear un nuevo RCW. Al escribir worksheet.Range["A1"].Value, se crean dos objetos COM independientes: uno para Range y otro implícitamente a través del acceso con dos puntos. Es posible que el recolector de basura acabe limpiándolos, pero sin garantía alguna en cuanto al momento en que lo haga. En aplicaciones de alto rendimiento, la cola de trabajo puede crecer más rápido de lo que se produce la recopilación.

Windows cuenta las referencias COM internamente. Hasta que ese recuento llegue a cero, el proceso subyacente (EXCEL.EXE) permanece activo. Llamar a GC.Collect() y GC.WaitForPendingFinalizers() fuerza un ciclo de recolección, pero este enfoque tiene un coste en el rendimiento y no es una solución a largo plazo para el código de producción.

¿Por qué el patrón de doble punto causa problemas?

El patrón de doble punto (app.Workbooks.Open(path)) es idiomático en C#, pero en contextos de COM Interop crea un objeto intermedio sin referenciar. Se crea el objeto de colección Workbooks, se utiliza para llamar a Open y, a continuación, queda inmediatamente huérfano porque tu código no contiene ninguna referencia a él. El recolector de basura no tiene un calendario predecible para finalizar estos objetos, por lo que EXCEL.EXE permanece abierto.

El único enfoque seguro con Interop es almacenar cada objeto intermedio en una variable con nombre y liberarlos uno a uno explícitamente en orden inverso al de su creación.

¿Cómo se liberan correctamente los objetos de interoperabilidad de Excel?

El enfoque tradicional requiere un seguimiento meticuloso de cada objeto COM creado. Debe evitar el uso de dos puntos dobles, almacenar cada objeto intermedio en una variable local y liberarlos en orden inverso. El siguiente código muestra el patrón de limpieza verbosa que suele encontrarse en las respuestas de Stack Overflow y en la documentación de Microsoft:

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

// Verbose Interop cleanup pattern
Excel.Application excelApp = new Excel.Application();
Excel.Workbooks workbooks = excelApp.Workbooks;
Excel.Workbook workbook = workbooks.Open("report.xlsx");
Excel.Sheets sheets = workbook.Sheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets[1];

// Work with data
worksheet.Cells[1, 1] = "Updated Value";

// Cleanup -- release EVERY COM object in reverse order
workbook.Close(false);
excelApp.Quit();

Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(sheets);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApp);

GC.Collect();
GC.WaitForPendingFinalizers();
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

// Verbose Interop cleanup pattern
Excel.Application excelApp = new Excel.Application();
Excel.Workbooks workbooks = excelApp.Workbooks;
Excel.Workbook workbook = workbooks.Open("report.xlsx");
Excel.Sheets sheets = workbook.Sheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets[1];

// Work with data
worksheet.Cells[1, 1] = "Updated Value";

// Cleanup -- release EVERY COM object in reverse order
workbook.Close(false);
excelApp.Quit();

Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(sheets);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApp);

GC.Collect();
GC.WaitForPendingFinalizers();
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices

' Verbose Interop cleanup pattern
Dim excelApp As New Excel.Application()
Dim workbooks As Excel.Workbooks = excelApp.Workbooks
Dim workbook As Excel.Workbook = workbooks.Open("report.xlsx")
Dim sheets As Excel.Sheets = workbook.Sheets
Dim worksheet As Excel.Worksheet = CType(sheets(1), Excel.Worksheet)

' Work with data
worksheet.Cells(1, 1) = "Updated Value"

' Cleanup -- release EVERY COM object in reverse order
workbook.Close(False)
excelApp.Quit()

Marshal.ReleaseComObject(worksheet)
Marshal.ReleaseComObject(sheets)
Marshal.ReleaseComObject(workbook)
Marshal.ReleaseComObject(workbooks)
Marshal.ReleaseComObject(excelApp)

GC.Collect()
GC.WaitForPendingFinalizers()
$vbLabelText   $csharpLabel

Este código almacena cada objeto de Excel por separado para garantizar una limpieza adecuada. Las llamadas GC.Collect() y GC.WaitForPendingFinalizers() al final fuerzan la recolección de basura. Algunos desarrolladores envuelven todo en un bloque try/finally para garantizar la limpieza incluso cuando se producen excepciones.

En casos extremos en los que la limpieza estándar falla, algunos equipos recurren a métodos de terminación de procesos utilizando objetos de tareas de Windows. Esto implica declaraciones P/Invoke para CreateJobObject, SetInformationJobObject y AssignProcessToJobObject. Aunque esto funciona como último recurso, trata los síntomas en lugar de solucionar el problema de diseño subyacente.

¿Cómo se instala una biblioteca de Excel sin COM en C#?

IronXL adopta un enfoque fundamentalmente diferente para las operaciones con archivos de Excel. En lugar de envolver objetos COM de Microsoft Office, IronXL lee y escribe formatos de archivo de Excel directamente utilizando su propio analizador y renderizador. Esto significa que no hay referencias COM, ni dependencias de interoperabilidad de Office, ni procesos persistentes. Ni siquiera es necesario tener Microsoft Excel instalado en el equipo.

Instala IronXL a través de la consola del gestor de paquetes NuGet en Visual Studio:

Install-Package IronXl.Excel
Install-Package IronXl.Excel
SHELL

O usa la CLI de .NET:

dotnet add package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

Tras la instalación, añade la directiva using IronXL; a tu archivo. Tu proyecto dispone ahora de acceso directo y nativo a las operaciones de archivos de Excel sin ninguna dependencia de Office. IronXL es compatible con .NET 8, .NET 9, .NET 10 y .NET Framework 4.6.2+, y se ejecuta en Windows, Linux, macOS, Docker y Azure.

¿Qué paquetes NuGet se necesitan?

Solo se requiere un único paquete NuGet: IronXl.Excel. No depende de Microsoft Office, de los ensamblados de Office Interop ni de ningún registro COM. Esto simplifica enormemente la implementación: puede publicar su aplicación como un ejecutable autónomo y se ejecutará en cualquier servidor sin necesidad de tener Office instalado.

Para proyectos que también requieran la generación de archivos PDF, IronPDF se integra con IronXL para exportar datos de Excel directamente a PDF sin necesidad de pasar por la automatización de Excel.

¿Cómo se leen archivos de Excel sin objetos COM?

El siguiente código muestra cómo leer un archivo de Excel con IronXL. Tenga en cuenta que no es necesario limpiar el código:

using IronXL;

// Load and read Excel files without COM objects
WorkBook workBook = WorkBook.Load("report.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Access cell values directly
string cellValue = workSheet["A1"].StringValue;
decimal columnSum = workSheet["B2:B10"].Sum();

// No cleanup required -- workBook is a standard .NET object
Console.WriteLine($"Cell A1: {cellValue}");
Console.WriteLine($"Sum B2:B10: {columnSum}");
using IronXL;

// Load and read Excel files without COM objects
WorkBook workBook = WorkBook.Load("report.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Access cell values directly
string cellValue = workSheet["A1"].StringValue;
decimal columnSum = workSheet["B2:B10"].Sum();

// No cleanup required -- workBook is a standard .NET object
Console.WriteLine($"Cell A1: {cellValue}");
Console.WriteLine($"Sum B2:B10: {columnSum}");
Imports IronXL

' Load and read Excel files without COM objects
Dim workBook As WorkBook = WorkBook.Load("report.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Access cell values directly
Dim cellValue As String = workSheet("A1").StringValue
Dim columnSum As Decimal = workSheet("B2:B10").Sum()

' No cleanup required -- workBook is a standard .NET object
Console.WriteLine($"Cell A1: {cellValue}")
Console.WriteLine($"Sum B2:B10: {columnSum}")
$vbLabelText   $csharpLabel

Salida de consola

Liberación de objetos Excel en C#: Detenga los procesos de Excel que se prolongan con IronXL: Imagen 3 - Salida de IronXL leyendo un archivo Excel de entrada

IronXL gestiona los objetos de Excel como tipos nativos de .NET. Cuando la variable workBook sale del ámbito, la recolección de basura estándar de .NET se encarga de la limpieza de la memoria. No es necesario realizar un seguimiento de las referencias COM, llamar a Marshal.ReleaseComObject ni forzar ciclos de recolección de basura.

También puede utilizar bloques using con los libros de trabajo de IronXL for .NET para la eliminación determinista, aunque no es necesario para evitar fugas de procesos; se trata simplemente de una buena práctica de gestión de recursos de .NET.

¿Cómo se accede a varias hojas de cálculo?

Acceder a varias hojas de cálculo en IronXL es tan sencillo como trabajar con cualquier colección .NET:

using IronXL;

WorkBook workBook = WorkBook.Load("multi-sheet-report.xlsx");

// Iterate all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    int rowCount = sheet.RowCount;
    Console.WriteLine($"Sheet '{sheetName}' has {rowCount} rows");
}

// Access a specific sheet by name
WorkSheet salesSheet = workBook["Sales"];
decimal totalRevenue = salesSheet["C2:C100"].Sum();
Console.WriteLine($"Total Revenue: {totalRevenue:C}");
using IronXL;

WorkBook workBook = WorkBook.Load("multi-sheet-report.xlsx");

// Iterate all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    int rowCount = sheet.RowCount;
    Console.WriteLine($"Sheet '{sheetName}' has {rowCount} rows");
}

// Access a specific sheet by name
WorkSheet salesSheet = workBook["Sales"];
decimal totalRevenue = salesSheet["C2:C100"].Sum();
Console.WriteLine($"Total Revenue: {totalRevenue:C}");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("multi-sheet-report.xlsx")

' Iterate all worksheets
For Each sheet As WorkSheet In workBook.WorkSheets
    Dim sheetName As String = sheet.Name
    Dim rowCount As Integer = sheet.RowCount
    Console.WriteLine($"Sheet '{sheetName}' has {rowCount} rows")
Next

' Access a specific sheet by name
Dim salesSheet As WorkSheet = workBook("Sales")
Dim totalRevenue As Decimal = salesSheet("C2:C100").Sum()
Console.WriteLine($"Total Revenue: {totalRevenue:C}")
$vbLabelText   $csharpLabel

Sin enumeradores de iteración COM, sin objetos temporales ocultos y sin necesidad de limpieza. La API de IronXL sigue los patrones de colección estándar de .NET en todo momento.

¿Cómo se crea un nuevo archivo de Excel sin Interop?

La creación de archivos Excel sigue los mismos patrones sencillos. El siguiente código muestra cómo crear un nuevo libro de trabajo, añadir datos estructurados, aplicar un formato básico y ahorrar:

using IronXL;

// Create a new Excel spreadsheet in XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Data");

// Write headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Units Sold";
workSheet["C1"].Value = "Revenue";

// Write data rows
workSheet["A2"].Value = "Widget Alpha";
workSheet["B2"].Value = 450;
workSheet["C2"].Value = 22500;

workSheet["A3"].Value = "Widget Beta";
workSheet["B3"].Value = 310;
workSheet["C3"].Value = 15500;

// Add a formula
workSheet["C4"].Formula = "=SUM(C2:C3)";

// Save the Excel file
workBook.SaveAs("sales_report.xlsx");
Console.WriteLine("Spreadsheet saved successfully.");
using IronXL;

// Create a new Excel spreadsheet in XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Data");

// Write headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Units Sold";
workSheet["C1"].Value = "Revenue";

// Write data rows
workSheet["A2"].Value = "Widget Alpha";
workSheet["B2"].Value = 450;
workSheet["C2"].Value = 22500;

workSheet["A3"].Value = "Widget Beta";
workSheet["B3"].Value = 310;
workSheet["C3"].Value = 15500;

// Add a formula
workSheet["C4"].Formula = "=SUM(C2:C3)";

// Save the Excel file
workBook.SaveAs("sales_report.xlsx");
Console.WriteLine("Spreadsheet saved successfully.");
Imports IronXL

' Create a new Excel spreadsheet in XLSX format
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sales Data")

' Write headers
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Units Sold"
workSheet("C1").Value = "Revenue"

' Write data rows
workSheet("A2").Value = "Widget Alpha"
workSheet("B2").Value = 450
workSheet("C2").Value = 22500

workSheet("A3").Value = "Widget Beta"
workSheet("B3").Value = 310
workSheet("C3").Value = 15500

' Add a formula
workSheet("C4").Formula = "=SUM(C2:C3)"

' Save the Excel file
workBook.SaveAs("sales_report.xlsx")
Console.WriteLine("Spreadsheet saved successfully.")
$vbLabelText   $csharpLabel

Resultado

Liberación de objetos de Excel en C#: Detenga los procesos de Excel que se prolongan con IronXL: Imagen 4 - Archivo de Excel creado sin Interop

Este enfoque elimina la complejidad de gestionar un objeto de aplicación de Excel, gestionar avisos de cambios no guardados o garantizar que el hilo principal utilice un modelo de apartamento STA. IronXL simplifica el acceso a las funciones de las hojas de cálculo sin las complicaciones de las dependencias de los complementos de Office ni el registro de ensamblados de Interop.

Para situaciones que requieran operaciones más complejas, IronXL ofrece métodos para la evaluación de fórmulas, el estilo de celdas y los libros de trabajo con varias hojas. Puedes escribir código que manipule datos de hojas de cálculo de Excel, aplique formato y exporte a múltiples formatos de archivo, todo ello sin preocuparte por la gestión del ciclo de vida de los objetos COM.

¿Cuáles son las diferencias clave entre Interop de Excel y una biblioteca directa?

La siguiente tabla resume las diferencias más importantes entre los dos enfoques:

Comparación entre Interop de Excel e IronXL para aplicaciones C#
Capacidad Interop de Excel IronXL
Se requiere Microsoft Office No
Limpieza de objetos COM Manual (cada objeto) Automático (.NET GC)
Riesgo de que EXCEL.EXE permanezca en el sistema Alto Ninguno
Funciona en entornos de servidor Limitado (se requiere hilo STA) Sí (todos los entornos)
Compatibilidad con Docker / Linux No
Formatos de archivo compatibles XLS, XLSX (a través de Office) XLS, XLSX, CSV, TSV, JSON
Seguridad de hilos Solo STA Multihilo
Complejidad del código (lectura básica) Alta (muchas llamadas de lanzamiento) Bajo (3-5 líneas)

Lanzamiento de Excel Object C#: Acaba con los procesos de Excel que se quedan colgados con IronXL: Imagen 2 - Tabla comparativa entre Interop e IronXL

IronXL también permite leer archivos CSV, exportar datos a CSV, trabajar con gráficos de Excel y aplicar formato condicional. Todas estas capacidades están disponibles sin depender de Office, lo que hace que IronXL sea adecuado tanto para aplicaciones de escritorio como para aplicaciones del lado del servidor.

Para obtener más detalles sobre escenarios avanzados, consulte la documentación de IronXL y la referencia de la API de IronXL. También puede explorar la galería de ejemplos de IronXL, donde encontrará ejemplos de código listos para usar que abarcan docenas de tareas comunes de automatización de Excel.

¿Qué ocurre con las fórmulas de Excel y la validación de datos?

IronXL admite la lectura y escritura de fórmulas de Excel de forma nativa. Puede establecer la propiedad Formula de una celda e IronXL almacenará la fórmula en el archivo y la evaluará. En cuanto a las reglas de validación de datos, IronXL admite listas desplegables, restricciones de rango numérico y validación de fechas, todo ello sin necesidad de que Excel realice el cálculo.

La biblioteca también gestiona la protección con contraseña de Excel, las celdas combinadas y las configuraciones de congelación de paneles de Excel. Consulte los tutoriales de IronXL para obtener una guía paso a paso sobre cada función.

¿Cómo se migra de Interop de Excel a una biblioteca nativa de .NET?

La migración de un código base existente basado en Interop a IronXL suele implicar cuatro pasos:

  1. Eliminar la referencia NuGet Microsoft.Office.Interop.Excel y el registro COM
  2. Instala IronXl.Excel a través de NuGet
  3. Sustituir la creación de objetos Interop por equivalentes de IronXL (WorkBook.Load, WorkBook.Create)
  4. Eliminar todas las llamadas Marshal.ReleaseComObject y los patrones GC.Collect

La mayoría de los nombres de propiedades se asignan de forma intuitiva: worksheet.Cells[row, col] se convierte en workSheet[$"{col}{row}"].Value, y workbook.SaveAs(path) permanece prácticamente idéntico. La guía de migración de IronXL cubre los patrones de conversión más comunes.

Un aspecto a tener en cuenta es el subprocesamiento. Interop requiere subprocesos STA, lo que obliga a configuraciones específicas del grupo de subprocesos en ASP.NET. Tras cambiar a IronXL, puede eliminar cualquier atributo [STAThread] y la configuración de apartamentos de subprocesos: IronXL es seguro para subprocesos de forma predeterminada.

Para migraciones a gran escala que abarcan muchos archivos, los ejemplos de procesamiento por lotes de IronXL muestran cómo procesar cientos de archivos de Excel de manera eficiente utilizando bucles paralelos y patrones asíncronos.

¿Cuales son tus próximos pasos?

El problema de limpieza de objetos COM en Interop de Excel ha frustrado a los desarrolladores de .NET durante años. Realizar un seguimiento de cada objeto intermedio, liberarlos en el orden correcto y gestionar las excepciones sin fugas de referencias añade una complejidad significativa a lo que deberían ser operaciones sencillas de hoja de cálculo.

IronXL ofrece un camino más limpio hacia adelante. Al operar directamente con formatos de archivo de Excel —independientemente de Microsoft Office— elimina los problemas de los objetos COM desde su origen. Tanto si estás leyendo archivos existentes, creando otros nuevos o procesando grandes lotes, IronXL gestiona las operaciones de hojas de cálculo de Excel con la simplicidad que exige el desarrollo moderno de .NET.

Para empezar:

Para comparar con otras bibliotecas de Excel en el ecosistema .NET, consulte la documentación de Microsoft sobre Interop de Excel, el repositorio de GitHub de la biblioteca EPPlus y el proyecto ClosedXML para comprender las ventajas y desventajas de cada opción. La ventaja de IronXL es su combinación de una API completa, una implementación que no requiere Office y compatibilidad total con múltiples plataformas bajo una única licencia comercial.

Preguntas Frecuentes

¿Qué es IronXL?

IronXL es una biblioteca .NET que simplifica el trabajo con archivos Excel dentro de aplicaciones C#, eliminando la necesidad de interoperabilidad con Microsoft Office.

¿Por qué debería liberar objetos de Excel en C#?

La liberación de objetos de Excel en C# es crucial para evitar procesos de Excel persistentes, que pueden generar problemas de rendimiento y pérdidas de memoria.

¿Cómo ayuda IronXL con la limpieza de objetos de Excel?

IronXL automatiza la limpieza de objetos de Excel, lo que reduce la complejidad y los errores asociados con la administración manual de objetos de interoperabilidad en C#.

¿Cuáles son los desafíos de utilizar la interoperabilidad de Excel en C#?

La interoperabilidad de Excel en C# a menudo genera problemas como procesos persistentes y pérdidas de memoria debido a la gestión manual de objetos COM.

¿Puedo manipular archivos de Excel sin tener instalado Microsoft Office?

Sí, IronXL le permite manipular archivos de Excel sin necesidad de tener Microsoft Office instalado en su sistema.

¿IronXL admite todos los formatos de archivos de Excel?

IronXL admite una amplia gama de formatos de archivos de Excel, incluidos XLSX, XLS, CSV y más, lo que permite operaciones de archivos versátiles.

¿IronXL es adecuado para operaciones con archivos Excel a gran escala?

IronXL está diseñado para gestionar de manera eficiente operaciones de archivos Excel a gran escala, lo que lo hace adecuado para aplicaciones de nivel empresarial.

¿Cuáles son los beneficios de usar IronXL sobre Excel Interop?

IronXL ofrece beneficios como código simplificado, mejor rendimiento y la eliminación de problemas relacionados con COM en comparación con Excel Interop.

¿Cómo puedo integrar IronXL en mi proyecto C#?

Puede integrar IronXL en su proyecto C# instalándolo a través del Administrador de paquetes NuGet y haciendo referencia a él en el código de su aplicación.

¿IronXL proporciona soporte para fórmulas de Excel?

Sí, IronXL admite fórmulas de Excel, lo que le permite leerlas, escribirlas y evaluarlas dentro de sus aplicaciones C#.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame