C# Solución interoperativa de Excel

This article was translated from English: Does it need improvement?
Translated
View the article in English

Muchos proyectos utilizan Excel para comunicarse con claridad, pero si está utilizando Microsoft.Office.Interop.Excel entonces es probable que haya tenido que enfrentarse a muchas líneas de código complicadas. En este tutorial, usaremos IronXL como una solución de C# Excel Interop, para que no tenga que usar Interop para terminar su proyecto. Puede utilizar datos de archivos Excel, crear archivos Excel, editarlos y manipularlos, todo ello mediante programación en C#.


Cómo utilizar Excel Interop de forma alternativa

  1. Instale una biblioteca Excel para procesar archivos Excel.

  2. Abra el Libro de trabajo y añada el archivo Excel actual.

  3. Establezca la Hoja de Trabajo por defecto.

  4. Lee el valor del Libro de Excel.

  5. Procesar y mostrar el valor.

    Primer paso

1. Descargar la biblioteca IronXL

Descargar la biblioteca IronXL oinstalar con NuGet para acceder a la biblioteca gratuita y, a continuación, siga paso a paso este tutorial sobre el uso de Excel sin Interop. Licencias disponibles si desea ir en vivo con su proyecto.

Install-Package IronXL.Excel

Tutorial

2. Acceder a datos de archivos Excel

Para desarrollar aplicaciones empresariales, necesitamos un acceso fácil y perfecto a los datos de los archivos de Excel y la capacidad de manipularlos mediante programación en función de diversos requisitos. Con IronXL, utilice el comando WorkBook.Load(), que permite acceder a la lectura de un archivo Excel específico.

Después de acceder al Libro de trabajo, puede elegir una Hoja de trabajo específica utilizando WorkBook.GetWorkSheet() función. Ahora tiene todos los datos del archivo Excel disponibles. Vea en el siguiente ejemplo cómo utilizamos estas funciones para obtener datos de archivos Excel en un proyecto C#.

/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
    //Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //get specific cell value
    string a = ws ["A5"].Value.ToString();
    Console.WriteLine(" Getting Single Value:\n\n   Value of Cell A5: {0} ",a);
    Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
    //get many cell values using range function
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
/**
Access File Data
anchor-access-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
    //Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //get specific cell value
    string a = ws ["A5"].Value.ToString();
    Console.WriteLine(" Getting Single Value:\n\n   Value of Cell A5: {0} ",a);
    Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
    //get many cell values using range function
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
'''
'''Access File Data
'''anchor-access-excel-file-data
'''*
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'Access Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Access WorkSheet of Excel file
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'get specific cell value
	Dim a As String = ws ("A5").Value.ToString()
	Console.WriteLine(" Getting Single Value:" & vbLf & vbLf & "   Value of Cell A5: {0} ",a)
	Console.WriteLine(vbLf & " Getting Many Cells Value using Loop:" & vbLf)
	'get many cell values using range function
	For Each cell In ws ("B2:B10")
		Console.WriteLine("   Value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
VB   C#

Este código producirá el siguiente resultado:

1output related to 2. Acceder a datos de archivos Excel

Con el archivo Excel con este aspecto:

1excel related to 2. Acceder a datos de archivos Excel

Podemos ver que nuestro archivo Excel, sample.xlsx, tiene small business en la celda A5. Los demás valores de B2 a B10 son los mismos y se muestran en la salida.

DataSet y DataTables

También podemos trabajar con archivos Excel como un conjunto de datos, y tablas de datos, utilizando estas direcciones.

/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.          
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
 WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet(); 
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.          
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
 WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet(); 
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
'''
'''DataSet and DataTables
'''anchor-dataset-and-datatables
'''*
'Access WorkBook.          
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Access WorkSheet.
 Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Behave with a workbook as Dataset.
Dim ds As DataSet = wb.ToDataSet()
'Behave with workbook as DataTable
Dim dt As DataTable = ws.ToDataTable(True)
VB   C#

Más información sobre cómo trabajar conExcel DataSet y DataTablesque proporciona más ejemplos de código y explicaciones sobre el proceso.

Ahora, veremos otro aspecto, que se trata de crear un nuevo archivo Excel en nuestro proyecto C#.


3. Crear nuevo archivo Excel

Podemos crear fácilmente una nueva hoja de cálculo Excel e insertar datos en ella mediante programación en nuestro proyecto CSharp. Para lograr esto, IronXL proporciona el ` WorkBook.Create()que crea un nuevo archivo Excel.

Podemos crear tantas hojas de trabajo como necesitemos utilizando WorkBook.CreateWorkSheet() función.

Después, también podemos insertar datos, como se muestra en el siguiente ejemplo:

/**
Create New Excel 
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
    //create new WorkBook
    WorkBook wb = WorkBook.Create();
    //Create new WorkSheet in wb
    WorkSheet ws = wb.CreateWorkSheet("sheet1");
    //Insert Data 
    ws ["A1"].Value = "New Value A1";
    ws ["B2"].Value = "New Value B2";
    //Save newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
/**
Create New Excel 
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
    //create new WorkBook
    WorkBook wb = WorkBook.Create();
    //Create new WorkSheet in wb
    WorkSheet ws = wb.CreateWorkSheet("sheet1");
    //Insert Data 
    ws ["A1"].Value = "New Value A1";
    ws ["B2"].Value = "New Value B2";
    //Save newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
'''
'''Create New Excel 
'''anchor-create-new-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'create new WorkBook
	Dim wb As WorkBook = WorkBook.Create()
	'Create new WorkSheet in wb
	Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")
	'Insert Data 
	ws ("A1").Value = "New Value A1"
	ws ("B2").Value = "New Value B2"
	'Save newly created Excel file
	wb.SaveAs("NewExcelFile.xlsx")
End Sub
VB   C#

El código anterior creará un nuevo archivo Excel con el nombre NuevoArchivoExcel.xlsx, e insertará nuevos datos en las direcciones de celda A1 y B1 con los valores Nuevo Valor A1 y Nuevo Valor B2 respectivamente. Con esta configuración, puedes insertar datos de la misma manera, tanto como necesites. Nota: Si está creando un nuevo archivo Excel o modificando el existente, no olvide guardar el archivo como se muestra en el ejemplo anterior. Profundice en cómoCrear nuevas hojas de cálculo Excel con C# y prueba el código en tu proyecto.


4. Modificar archivo Excel existente

Podemos modificar archivos Excel existentes e insertar en ellos datos actualizados mediante programación. En las modificaciones de archivos Excel, veremos los siguientes aspectos:

  • Actualizar el valor de la celda
  • Sustituir los valores antiguos por los nuevos
  • Eliminar la fila o columna

    Veamos cómo implementar los temas anteriores en nuestro proyecto CSharp.

Actualizar valor de celda

Es muy sencillo actualizar el valor de la celda de una hoja de cálculo Excel existente. Sólo tiene que acceder al archivo Excel en el proyecto y especificar su Hoja de trabajo, y luego actualizar sus datos como se muestra en el siguiente ejemplo:

/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //update A3 value
    ws ["A3"].Value = "New Value of A3";
    wb.SaveAs("sample.xlsx");
}
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //update A3 value
    ws ["A3"].Value = "New Value of A3";
    wb.SaveAs("sample.xlsx");
}
'''
'''Update Cell Value
'''anchor-update-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'update A3 value
	ws ("A3").Value = "New Value of A3"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

El código anterior actualizará el valor de la celda A3 con Nuevo Valor de A3.

También podemos actualizar varias celdas con un valor estático, utilizando la función rango:

 ws ["A3:C3"].Value = "New Value";
 ws ["A3:C3"].Value = "New Value";
ws ("A3:C3").Value = "New Value"
VB   C#

Esto actualizará la fila número 3 de las celdas A3 a C3 con el Nuevo Valor del fichero Excel.

Más información sobre el uso delFunción Range en C# con estos ejemplos.

Sustituir valores de celda

Es la belleza de IronXL que podemos reemplazar fácilmente los viejos valores con nuevos valores en un archivo Excel existente y cubre todos los siguientes aspectos:

  • Reemplazar valores de una Hoja de Trabajo completa:
 WorkSheet.Replace("old value", "new value");
 WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
VB   C#
  • Sustituye los valores de una fila concreta:
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
VB   C#
  • Reemplazar los valores de una columna específica:
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
VB   C#
  • Reemplazar valores en un rango específico:
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
VB   C#

Veamos un ejemplo para ver claramente cómo utilizar las funciones anteriores en nuestro proyecto CSharp para reemplazar los valores. Para ello, utilizaremos la función reemplazar para reemplazar un valor en un rango específico.

/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Specifying Range from B5 to G5
    ws ["B5:G5"].Replace("Normal", "Good");
    wb.SaveAs("sample.xlsx");
}
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Specifying Range from B5 to G5
    ws ["B5:G5"].Replace("Normal", "Good");
    wb.SaveAs("sample.xlsx");
}
'''
'''Replace Cell Value Range
'''anchor-replace-cell-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Specifying Range from B5 to G5
	ws ("B5:G5").Replace("Normal", "Good")
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

El código anterior reemplazará el valor Normal por Bueno desde B5 hasta G5, y el resto de la Hoja de Trabajo permanecerá igual. Más informaciónEditar Valores de Celdas Excel en un Rango y utilizando esta función de IronXL.

Eliminar filas de un archivo Excel

En el desarrollo de aplicaciones, a veces necesitamos eliminar mediante programación filas enteras de archivos Excel existentes. Para esta tarea, utilizamos la función RemoveRow() función de IronXL. He aquí un ejemplo:

/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Remove the row number 2
    ws.Rows [2].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Remove the row number 2
    ws.Rows [2].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
'''
'''Remove Row
'''anchor-remove-rows-of-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Remove the row number 2
	ws.Rows (2).RemoveRow()
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

El código anterior eliminará la fila número 2 de sample.xlsx.


Acceso rápido a tutoriales

Referencia IronXL

Lea la Referencia de la API de IronXL para obtener más información sobre todas las funciones, características, clases y espacios de nombres.

Referencia IronXL
Documentation related to Acceso rápido a tutoriales