Escribir funciones .NET de Excel

Muchos proyectos de aplicaciones C# requieren que actualicemos archivos y escribamos nuevos datos en Hojas de Cálculo Excel mediante programación. Las capacidades de Excel .NET a veces pueden ser complicadas, pero utilizando la librería IronXL, esta tarea es bastante sencilla y permite trabajar con Hojas de Cálculo Excel en cualquier formato. Sin grandes líneas de código, sólo acceso a las celdas específicas y a los valores personalizados que asignes.

Biblioteca NuGet C# para Excel

Instalar con NuGet

Install-Package IronXL.Excel
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Acceso a archivos Excel

Empecemos por acceder al fichero Excel en el que queremos escribir los datos. Abramos el archivo Excel en nuestro proyecto, y luego abramos su Hoja de Trabajo específica, usando el siguiente código.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-load-file.cs
//  Cargar archivo Excel en el proyecto
WorkBook workBook = WorkBook.Load("path");
'  Cargar archivo Excel en el proyecto
Dim workBook As WorkBook = WorkBook.Load("path")
VB   C#

Lo anterior abrirá el archivo Excel especificado. A continuación, la Hoja de cálculo.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-get-sheet.cs
//  Abrir hoja de Excel
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
'  Abrir hoja de Excel
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
VB   C#

El Excel WorkSheet se abrirá en workSheet y podemos usarlo para escribir cualquier tipo de datos en un archivo Excel. Más información sobre cómo cargar archivo Excel tipos y acceder a las hojas de trabajo de diferentes maneras a través de los ejemplos del enlace. Nota: No olvides añadir la referencia de IronXL en tu proyecto e importar la librería mediante Using IronXL.


Escribir valor en celda específica

Podemos escribir en un fichero Excel utilizando muchos métodos diferentes, pero el enfoque básico es utilizar Celda Excel. Para ello, se puede acceder a cualquier celda de la hoja de Excel abierta y escribir un valor en ella de la siguiente manera:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell.cs
workSheet["Cell Address"].Value="Assign the Value";
workSheet("Cell Address").Value="Assign the Value"
VB   C#

He aquí un ejemplo de cómo utilizar la función anterior para escribir en una celda de Excel en nuestro proyecto C#.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-full.cs
using IronXL;

//  Cargar archivo Excel
WorkBook workBook = WorkBook.Load("sample.xlsx");

//  Abrir hoja de trabajo de sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

//  Accede a la celda A1 y escribe el valor
workSheet["A1"].Value = "new value";

//  Guardar cambios
workBook.SaveAs("sample.xlsx");
Imports IronXL

'  Cargar archivo Excel
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

'  Abrir hoja de trabajo de sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

'  Accede a la celda A1 y escribe el valor
Private workSheet("A1").Value = "new value"

'  Guardar cambios
workBook.SaveAs("sample.xlsx")
VB   C#

Este código escribirá el nuevo valor en la celda A1 de la Hoja de Trabajo Hoja1 en el fichero Excel sample.xlsx. Del mismo modo, podemos insertar valores en cualquier dirección de celda de un fichero Excel. Nota: No olvide guardar el archivo Excel después de escribir nuevos valores en la Hoja de Trabajo, como se muestra en el ejemplo anterior.

Forzar la asignación del valor exacto

Al establecer la propiedad Value, IronXL intentaría convertirla a su tipo de valor correspondiente. A veces, esta evaluación no es deseable ya que el usuario quiere forzar la asignación del valor exacto a la celda y no el convertido. La forma de hacerlo es asignar el valor como una cadena. Esto puede hacerse colocando un apóstrofo delante del valor de una celda en Excel. En IronXL, simplemente use StringValue en lugar de Value para lograr lo mismo.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-stringvalue.cs
//  Asignar valor como cadena
workSheet["A1"].StringValue = "4402-12";
'  Asignar valor como cadena
workSheet("A1").StringValue = "4402-12"
VB   C#

Escribir valores estáticos en un intervalo

Podemos escribir nuevos valores en múltiples celdas, llamadas Rango, de la siguiente manera:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-range.cs
workSheet["From Cell Address:To Cell Address"].Value = "New Value";
workSheet("From Cell Address:To Cell Address").Value = "New Value"
VB   C#

De esta forma, especificamos el rango de celdas Desde hasta Hasta donde se escribirán los datos. Después de esto, se escribirá Nuevo Valor en todas las celdas que se encuentren en este rango. Comprender mejor C# Excel Rango consulte los ejemplos aquí.

Veamos cómo escribir un rango en acción utilizando el siguiente ejemplo.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-cell-range-full.cs
using IronXL;

//  Cargar archivo Excel
WorkBook workBook = WorkBook.Load("sample.xlsx");

//  Abrir hoja de trabajo de sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

//  Especifique el rango por filas y escriba el nuevo valor
workSheet["B2:B9"].Value = "new value";

//  Especifique el rango de columnas y escriba el nuevo valor
workSheet["C3:C7"].Value = "new value";

//  Guardar cambios
workBook.SaveAs("sample.xlsx");
Imports IronXL

'  Cargar archivo Excel
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

'  Abrir hoja de trabajo de sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

'  Especifique el rango por filas y escriba el nuevo valor
Private workSheet("B2:B9").Value = "new value"

'  Especifique el rango de columnas y escriba el nuevo valor
Private workSheet("C3:C7").Value = "new value"

'  Guardar cambios
workBook.SaveAs("sample.xlsx")
VB   C#

Este código escribirá el nuevo valor de B2 a B9. (Gama Row Wise) y de C3 a C7 (Gama por columnas) de la hoja de trabajo sheet1 del archivo Excel sample.xlsx. Utilizaba valores estáticos para las celdas de Excel.


Escribir valores dinámicos en un intervalo

También podemos añadir valores dinámicos a un rango, como se ve a continuación.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-dynamic-value.cs
using IronXL;

//  Cargar archivo Excel
WorkBook workBook = WorkBook.Load("sample.xlsx");

//  Abrir hoja de trabajo de sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

//  Especificar el rango en el que queremos escribir los valores
for (int i = 2; i <= 7; i++)
{
    //  Escribir el valor dinámico en una fila
    workSheet["B" + i].Value = "Value" + i;

    //  Escribir el valor dinámico en otra fila
    workSheet["D" + i].Value = "Value" + i;
}

//  Guardar cambios
workBook.SaveAs("sample.xlsx");
Imports IronXL

'  Cargar archivo Excel
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

'  Abrir hoja de trabajo de sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

'  Especificar el rango en el que queremos escribir los valores
For i As Integer = 2 To 7
	'  Escribir el valor dinámico en una fila
	workSheet("B" & i).Value = "Value" & i

	'  Escribir el valor dinámico en otra fila
	workSheet("D" & i).Value = "Value" & i
Next i

'  Guardar cambios
workBook.SaveAs("sample.xlsx")
VB   C#

El código anterior escribirá valores dinámicos en las columnas B y D desde 2 hasta 7 en el fichero Excel sample.xlsx. Podemos ver el resultado del código en sample.xlsx:


Reemplazar valor de celda Excel

Usando IronXL, podemos escribir fácilmente un nuevo valor para reemplazar el valor anterior, usando la función Replace() funcionan de la siguiente manera:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace.cs
workSheet.Replace("old value", "new value");
workSheet.Replace("old value", "new value")
VB   C#

La función anterior escribirá el nuevo valor sobreescribiendo el viejo valor en toda la hoja de Excel.

Reemplazar valor de celda en fila específica

Si queremos escribir un nuevo valor sólo en una fila específica, entonces se puede hacer de la siguiente manera:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-row.cs
workSheet.Rows[RowIndex].Replace("old value", "new value");
workSheet.Rows(RowIndex).Replace("old value", "new value")
VB   C#

Esto escribirá el nuevo valor sobre el viejo valor sólo en el índice de fila especificado.

Reemplazar valor de celda en columna específica

De la misma manera, si queremos escribir un nuevo valor sobre el viejo valor dentro de una columna específica, entonces se puede hacer de la siguiente manera:

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-column.cs
workSheet.Columns[ColumnIndex].Replace("old value", "new Value");
workSheet.Columns(ColumnIndex).Replace("old value", "new Value")
VB   C#

El código anterior escribirá el nuevo valor para reemplazar al viejo valor, pero sólo en el índice de columna especificado. El resto de la Hoja de Trabajo permanece igual.

Reemplazar valor de celda en rango específico

IronXL también provee una forma de escribir un nuevo valor reemplazando al viejo valor, sólo en un rango específico.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-range.cs
workSheet["From Cell Address : To Cell Address"].Replace("old value", "new value");
workSheet("From Cell Address : To Cell Address").Replace("old value", "new value")
VB   C#

Esto escribirá el nuevo valor por encima del viejo valor, sólo en las celdas que se encuentren en el rango especificado.

Veamos el ejemplo de cómo utilizar todas las funciones anteriores para escribir nuevos valores que sustituyan a los antiguos en una Hoja de Trabajo de Excel.

Ejemplo de todas las funciones

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-replace-full.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

//  Escriba nuevo sobre viejo en la Hoja de Trabajo completa
workSheet.Replace("old", "new");

//  Escriba lo nuevo sobre lo viejo en la fila nº 6 de la Hoja de Trabajo
workSheet.Rows[5].Replace("old", "new");

//  Escriba nuevo sobre viejo sólo en la columna nº 5 de la Hoja de Trabajo
workSheet.Columns[4].Replace("old", "new");

//  Escribe lo nuevo sobre lo viejo justo de A5 a H5 de la Hoja de Trabajo
workSheet["A5:H5"].Replace("old", "new");

workBook.SaveAs("sample.xlsx");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

'  Escriba nuevo sobre viejo en la Hoja de Trabajo completa
workSheet.Replace("old", "new")

'  Escriba lo nuevo sobre lo viejo en la fila nº 6 de la Hoja de Trabajo
workSheet.Rows(5).Replace("old", "new")

'  Escriba nuevo sobre viejo sólo en la columna nº 5 de la Hoja de Trabajo
workSheet.Columns(4).Replace("old", "new")

'  Escribe lo nuevo sobre lo viejo justo de A5 a H5 de la Hoja de Trabajo
workSheet("A5:H5").Replace("old", "new")

workBook.SaveAs("sample.xlsx")
VB   C#

Para obtener más información sobre cómo escribir aplicaciones Excel .NET y mucho más, consulte nuestro tutorial completo sobre cómo Abrir y escribir archivos Excel C#.


Acceso rápido a tutoriales

Leer la referencia de la API

Lea la documentación de IronXL que incluye listas de todas las funciones, características, espacios de nombres, clases y enums disponibles para usted en la biblioteca.

Leer la referencia de la API