Escribir funciones .NET de Excel

Chaknith Bin
Chaknith Bin
17 de junio, 2020
Actualizado 10 de diciembre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

Comienza con IronXL

Comience a usar IronXL en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer


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
// Load Excel file in the project
WorkBook workBook = WorkBook.Load("path");
' Load Excel file in the project
Dim workBook As WorkBook = WorkBook.Load("path")
$vbLabelText   $csharpLabel

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
// Open Excel WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
' Open Excel WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
$vbLabelText   $csharpLabel

La hoja de cálculo de Excel se abrirá en workSheet y podemos usarla para escribir cualquier tipo de dato en un archivo Excel. Obtén más información sobre cómo cargar tipos de archivos de Excel y acceder a las hojas de cálculo de diferentes maneras a través de los ejemplos en el enlace. Nota: No olvides agregar la referencia de IronXL en tu proyecto e importar la biblioteca usando Using IronXL.


Escribir valor en celda específica

Podemos escribir en un archivo Excel utilizando muchos métodos diferentes, pero el enfoque básico es usar Excel Cell. 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"
$vbLabelText   $csharpLabel

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;

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

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Access A1 cell and write the value
workSheet["A1"].Value = "new value";

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

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

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Access A1 cell and write the value
Private workSheet("A1").Value = "new value"

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

Este código escribirá new value en la celda A1 de la hoja de trabajo Sheet1 en el archivo 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 usa StringValue en lugar de Value para lograr lo mismo.

:path=/static-assets/excel/content-code-examples/how-to/write-excel-net-assign-stringvalue.cs
// Assign value as string
workSheet["A1"].StringValue = "4402-12";
' Assign value as string
workSheet("A1").StringValue = "4402-12"
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

De esta manera, especificamos el rango de celdas From a To donde se escribirán los datos. Después de esto, Nuevo Valor se escribirá en todas las celdas que se encuentren en este rango. Para entender más sobre C# Excel Range, consulta 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;

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

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify range row wise and write new value
workSheet["B2:B9"].Value = "new value";

// Specify range column wise and write new value
workSheet["C3:C7"].Value = "new value";

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

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

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify range row wise and write new value
Private workSheet("B2:B9").Value = "new value"

' Specify range column wise and write new value
Private workSheet("C3:C7").Value = "new value"

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

Este código escribirá new value de B2 a B9 (Rango de Filas) y de C3 a C7 (Rango de Columnas) de la hoja de trabajo sheet1 del archivo de 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;

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

// Open WorkSheet of sample.xlsx
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify range in which we want to write the values
for (int i = 2; i <= 7; i++)
{
    // Write the Dynamic value in one row
    workSheet["B" + i].Value = "Value" + i;

    // Write the Dynamic value in another row
    workSheet["D" + i].Value = "Value" + i;
}

// Save changes
workBook.SaveAs("sample.xlsx");
Imports IronXL

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

' Open WorkSheet of sample.xlsx
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify range in which we want to write the values
For i As Integer = 2 To 7
	' Write the Dynamic value in one row
	workSheet("B" & i).Value = "Value" & i

	' Write the Dynamic value in another row
	workSheet("D" & i).Value = "Value" & i
Next i

' Save changes
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

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

1excel related to Escribir valores dinámicos en un intervalo

Reemplazar valor de celda Excel

Usando IronXL, podemos escribir fácilmente un nuevo valor para reemplazar el valor antiguo, utilizando la función Replace() 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")
$vbLabelText   $csharpLabel

La función anterior escribirá new value sobrescribiendo el old value en toda la hoja de trabajo 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")
$vbLabelText   $csharpLabel

Esto escribirá nuevo valor sobre el valor antiguo solo en el índice de fila especificado.

Reemplazar valor de celda en columna específica

De la misma manera, si queremos escribir new value sobre el old value 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")
$vbLabelText   $csharpLabel

El código anterior escribirá nuevo valor para reemplazar el valor antiguo, pero solo 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 ofrece una forma de escribir new value reemplazando el old value, solo 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")
$vbLabelText   $csharpLabel

Esto escribirá new value sobre old value, solo 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");

// Write new above old in complete WorkSheet
workSheet.Replace("old", "new");

// Write new above old just in row no 6 of WorkSheet
workSheet.Rows[5].Replace("old", "new");

// Write new above old just in column no 5 of WorkSheet
workSheet.Columns[4].Replace("old", "new");

// Write new above old just from A5 to H5 of WorkSheet
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")

' Write new above old in complete WorkSheet
workSheet.Replace("old", "new")

' Write new above old just in row no 6 of WorkSheet
workSheet.Rows(5).Replace("old", "new")

' Write new above old just in column no 5 of WorkSheet
workSheet.Columns(4).Replace("old", "new")

' Write new above old just from A5 to H5 of WorkSheet
workSheet("A5:H5").Replace("old", "new")

workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

Para obtener más información sobre cómo escribir aplicaciones de Excel .NET y más, consulte nuestro tutorial completo sobre cómo Abrir y Escribir Archivos de Excel en 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
Documentation related to Acceso rápido a tutoriales
Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.