C# Solución interoperativa de Excel
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
Instale una biblioteca Excel para procesar archivos Excel.
Abra el
Libro de trabajo
y añada el archivo 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
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
Este código producirá el siguiente resultado:
Con el archivo Excel con este aspecto:
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)
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
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
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á 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")
- 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 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
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