C# Solución interoperativa de Excel
Muchos proyectos utilizan Excel para comunicarse claramente, pero si estás usando Microsoft.Office.Interop.Excel
probablemente has tenido que enfrentar 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
-
Instale una biblioteca Excel para procesar archivos Excel.
-
Abra el
Workbook
y agregue el archivo de Excel actual. -
Establezca la Hoja de Trabajo por defecto.
-
Lee el valor del Libro de Excel.
- Procesar y mostrar el valor.
Primer paso
1. Descargar la biblioteca IronXL
instalar con NuGet para acceder a la biblioteca gratuita y luego seguir paso a paso este tutorial sobre cómo usar Excel sin Interop. Licencias disponibles si deseas poner en marcha tu proyecto en vivo.
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, utiliza la función WorkBook.Load()
, que permite acceder a la lectura de un archivo Excel específico.
Después de acceder al WorkBook, puedes elegir una WorkSheet específica usando la función WorkBook.GetWorkSheet()
. 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
Este código producirá el siguiente resultado:
Con el archivo Excel con este aspecto:
Podemos ver que nuestro archivo de Excel, sample.xlsx
, tiene small business
en la celda A5
. Los otros 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)
Puedes leer más sobre cómo trabajar con Excel DataSet y DataTables, que 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 la función WorkBook.Create()
, que crea un nuevo archivo de Excel.
A continuación, podemos crear tantas hojas de trabajo como sea necesario utilizando la función WorkBook.CreateWorkSheet()
.
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
El código anterior creará un nuevo archivo Excel con el nombre NewExcelFile.xlsx
e insertará nuevos datos en las direcciones de celda A1
y B1
con los valores New Value A1
y New Value 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.
Profundiza en cómo crear nuevas hojas de cálculo de Excel usando 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
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"
Esto actualizará el número de fila 3 desde las celdas A3
a C3
con el Nuevo Valor
del archivo de Excel.
Obtenga más información sobre cómo usar la Función Range en C# con estos ejemplos.
Sustituir valores de celda
Es la belleza de IronXL que podemos reemplazar fácilmente los old values
con new values
en un archivo de Excel existente y abarca 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")
- 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")
- 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")
- 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")
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
El código anterior reemplazará el valor Normal
por Good
desde B5
hasta G5
, y el resto de la hoja de trabajo permanecerá igual. Vea más sobre cómo editar valores de celdas de Excel en un rango y usar 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()
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
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