C# Editar archivo Excel

Los desarrolladores tienen que tener cuidado cuando se disponen a modificar y editar archivos Excel en C# porque puede ser fácil que un paso en falso cambie todo el documento. Poder confiar en líneas de código sencillas y eficaces ayuda a reducir el riesgo de error y nos facilita la edición o eliminación de archivos Excel mediante programación. Hoy recorreremos los pasos necesarios para editar archivos Excel en C# de forma correcta y rápida utilizando funciones probadas.


Primer paso

1. C# Editar Archivos Excel usando la Librería IronXL

Para este tutorial, utilizaremos las funciones definidas por IronXL, una biblioteca de Excel en C#. Para utilizar estas funciones, primero tendrás que descargarlo e instalarlo en tu proyecto (libre para el desarrollo).

Puede Descargar IronXL.zip o lea más e instálelo a través de Página del paquete NuGet.

Una vez que lo hayas instalado, vamos a empezar!

Install-Package IronXL.Excel

Tutorial

2. Editar valores de celda específicos

En primer lugar, veremos cómo editar los valores específicos de las celdas de una Hoja de Cálculo Excel.

Para ello, importamos la Hoja de Cálculo Excel que se va a modificar y accedemos a su Hoja de Trabajo. A continuación, podemos aplicar las modificaciones como se muestra a continuación.

/**
Import and Edit SpreadSheet
anchor-edit-specific-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");//importar hoja de cálculo Excel
    WorkSheet ws = wb.GetWorkSheet("Sheet1");//acceder a una obra específica
    ws.Rows [3].Columns [1].Value = "New Value";//acceder a una celda específica y modificar su valor
    wb.SaveAs("sample.xlsx");//guardar cambios
}
/**
Import and Edit SpreadSheet
anchor-edit-specific-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");//importar hoja de cálculo Excel
    WorkSheet ws = wb.GetWorkSheet("Sheet1");//acceder a una obra específica
    ws.Rows [3].Columns [1].Value = "New Value";//acceder a una celda específica y modificar su valor
    wb.SaveAs("sample.xlsx");//guardar cambios
}
'''
'''Import and Edit SpreadSheet
'''anchor-edit-specific-cell-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx") 'importar hoja de cálculo Excel
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1") 'acceder a una obra específica
	ws.Rows (3).Columns (1).Value = "New Value" 'acceder a una celda específica y modificar su valor
	wb.SaveAs("sample.xlsx") 'guardar cambios
End Sub
VB   C#

Here are before and after screenshots of Excel SpreadSheet sample.xlsx:

Before After

:---: :-----:

before after

We can see how simple it is to modify the Excel SpreadSheet value.

If needed, there is also an alternative way to edit the specific cell value by cell address:

 ws ["B4"].Value = "New Value"; //forma alternativa de acceder a una celda específica y aplicar los cambios
 ws ["B4"].Value = "New Value"; //forma alternativa de acceder a una celda específica y aplicar los cambios
ws ("B4").Value = "New Value" 'forma alternativa de acceder a una celda específica y aplicar los cambios
VB   C#

3. Editar valores de fila completa

Es bastante sencillo editar valores de filas completas de una Hoja de Cálculo Excel con un valor estático.

/**
Edit Full Row Values
anchor-edit-full-row-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].Value = "New Value";        
    wb.SaveAs("sample.xlsx");
}
/**
Edit Full Row Values
anchor-edit-full-row-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].Value = "New Value";        
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Full Row Values
'''anchor-edit-full-row-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")
	ws.Rows (3).Value = "New Value"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Vea las capturas de pantalla de sample.xlsx a continuación:

Antes de En

:---: :-----:

antes de después de

Para ello, también podemos editar el valor de un rango específico de la fila, utilizando la función rango:

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

4. Editar valores de columna completos

Del mismo modo que en el caso anterior, podemos editar fácilmente columnas completas de valores de hojas de cálculo de Excel con un único valor.

/**
Edit Full Column Values
anchor-edit-full-column-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Columns [1].Value = "New Value";
    wb.SaveAs("sample.xlsx");
}
/**
Edit Full Column Values
anchor-edit-full-column-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Columns [1].Value = "New Value";
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Full Column Values
'''anchor-edit-full-column-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")
	ws.Columns (1).Value = "New Value"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Lo que producirá nuestra hoja de cálculo sample.xlsx como tal:

Antes de En

:---: :-----:

antes de después de


5. Editar fila completa con valores dinámicos

Con IronXL, también es posible editar filas específicas con valores dinámicos. Esto significa que podemos editar una fila completa asignando valores dinámicos a cada celda. Veamos el ejemplo:

/**
Edit Row Dynamic Values
anchor-edit-full-row-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Columns.Count(); i++)
    {
        ws.Rows [3].Columns [i].Value = "New Value "+i.ToString();
    }        
    wb.SaveAs("sample.xlsx");
}
/**
Edit Row Dynamic Values
anchor-edit-full-row-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Columns.Count(); i++)
    {
        ws.Rows [3].Columns [i].Value = "New Value "+i.ToString();
    }        
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Row Dynamic Values
'''anchor-edit-full-row-with-dynamic-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")
	For i As Integer = 0 To ws.Columns.Count() - 1
		ws.Rows (3).Columns (i).Value = "New Value " & i.ToString()
	Next i
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

En la siguiente tabla, vemos las capturas de pantalla de Excel SpreadSheet sample.xlsx de esta salida:

Antes de En

:---: :-----:

antes de después de


6. Editar columna completa con valores dinámicos

También es sencillo editar columnas específicas con valores dinámicos.

/**
Edit Column Dynamic Values
anchor-edit-full-column-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Rows.Count(); i++)
    {
        if (i == 0)//es para si nuestra primera columna se utiliza como cabecera
            continue;
        ws.Rows [i].Columns [1].Value = "New Value " + i.ToString();
    }
    wb.SaveAs("sample.xlsx");
}
/**
Edit Column Dynamic Values
anchor-edit-full-column-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Rows.Count(); i++)
    {
        if (i == 0)//es para si nuestra primera columna se utiliza como cabecera
            continue;
        ws.Rows [i].Columns [1].Value = "New Value " + i.ToString();
    }
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Column Dynamic Values
'''anchor-edit-full-column-with-dynamic-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")
	For i As Integer = 0 To ws.Rows.Count() - 1
		If i = 0 Then 'es para si nuestra primera columna se utiliza como cabecera
			Continue For
		End If
		ws.Rows (i).Columns (1).Value = "New Value " & i.ToString()
	Next i
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

Con la tabla de resultados de sample.xlsx a continuación:

Antes de En

:---: :-----:

antes de después de


7. Sustituir valores de hoja de cálculo

Si queremos reemplazar cualquier tipo de valor por un valor actualizado en una Hoja de Cálculo Excel, podemos utilizar la función llamada Replace. Usando esta función, podemos reemplazar los datos de Excel SpreadSheet en cualquier situación requerida.

7.1. Sustituir valor específico de hoja de trabajo completa

Para reemplazar un valor específico de una Hoja de Trabajo Excel completa por un valor actualizado, sólo tenemos que acceder a la Hoja de Trabajo ws. (igual que en los ejemplos anteriores) y aplicar la función Replace así.

/**
Replace Cell Values
anchor-replace-specific-value-of-complete-worksheet
**/
ws.Replace("old value", "new value");
/**
Replace Cell Values
anchor-replace-specific-value-of-complete-worksheet
**/
ws.Replace("old value", "new value");
'''
'''Replace Cell Values
'''anchor-replace-specific-value-of-complete-worksheet
'''*
ws.Replace("old value", "new value")
VB   C#

Esta función reemplazará el viejo valor por el nuevo valor en una Hoja de Trabajo Excel completa.

No olvides guardar el archivo después de cualquier cambio, como se muestra en los ejemplos anteriores.

7.2. Sustituir los valores de una fila específica

Si sólo desea realizar cambios en una fila específica en lugar de en todo el resto de la hoja de cálculo, utilice este código.

ws.Rows [2].Replace("old value", "new value");
ws.Rows [2].Replace("old value", "new value");
ws.Rows (2).Replace("old value", "new value")
VB   C#

El código anterior sustituirá el valor antiguo por el valor nuevo sólo en la fila número 2. El resto de la Hoja de Trabajo permanece igual.

7.3. Sustituir los valores del rango de filas

También podemos reemplazar los valores dentro de un rango específico de la siguiente manera:

ws ["From Cell Address : To Cell Address"].Replace("old value", "new value");
ws ["From Cell Address : To Cell Address"].Replace("old value", "new value");
ws ("From Cell Address : To Cell Address").Replace("old value", "new value")
VB   C#

Supongamos que queremos sustituir el valor antiguo por el nuevo, justo en el rango de B4 a E4 de la fila nº 4, entonces lo escribiríamos así:

ws ["B4:E4"].Replace("old value", "new value");
ws ["B4:E4"].Replace("old value", "new value");
ws ("B4:E4").Replace("old value", "new value")
VB   C#

7.4. Sustituir los valores de una columna específica

También podemos sustituir los valores de una columna concreta, y el resto de la hoja de cálculo permanece igual.

ws.Columns [1].Replace("old value", "new Value")
ws.Columns [1].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'ws.Columns [1].Replace("old value", "new Value")
VB   C#

El código anterior sustituirá el valor antiguo por el valor nuevo sólo para la columna número 1.

7.5. Sustituir los valores del rango de columnas

De la siguiente manera, también podemos utilizar la función de rango para reemplazar dentro de un rango de una columna específica.

 ws ["B5:B10"].Replace("old value", "new value");
 ws ["B5:B10"].Replace("old value", "new value");
ws ("B5:B10").Replace("old value", "new value")
VB   C#

El código anterior reemplazará el valor antiguo por el valor nuevo dentro del rango de B5 a B10 para la columna B.


8. Eliminar Fila de la Hoja de Excel

IronXL provee una función muy simple para remover una fila específica de una Hoja de Trabajo de Excel. Veamos el ejemplo.

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

El código anterior eliminará la fila número 3 de sample.xlsx como se muestra en la siguiente tabla:

Antes de En

:---: :-----:

antes de después de


9. Eliminar hoja de trabajo de un archivo Excel

Si queremos eliminar una WorkSheet completa de un fichero Excel, podemos utilizar el siguiente método:

/**
Remove Worksheet from File
anchor-remove-worksheet-from-excel-file
**/
wb.RemoveWorkSheet(1); //  por indexación de hojas
/**
Remove Worksheet from File
anchor-remove-worksheet-from-excel-file
**/
wb.RemoveWorkSheet(1); //  por indexación de hojas
'''
'''Remove Worksheet from File
'''anchor-remove-worksheet-from-excel-file
'''*
wb.RemoveWorkSheet(1) '  por indexación de hojas
VB   C#

wb` es el WorkBook, igual que en los ejemplos anteriores. Si queremos eliminar la hoja de trabajo por su nombre, entonces:

wb.RemoveWorkSheet("Sheet1"); //por nombre de hoja
wb.RemoveWorkSheet("Sheet1"); //por nombre de hoja
wb.RemoveWorkSheet("Sheet1") 'por nombre de hoja
VB   C#

IronXL es rico con muchas más funciones por las cuales podemos realizar fácilmente cualquier tipo de edición y eliminación en hojas de cálculo de Excel. Póngase en contacto con nuestro equipo de desarrollo si tiene alguna pregunta para utilizarlo en su proyecto.


Acceso rápido a la biblioteca

Documentación de la biblioteca IronXL

Explore todas las capacidades de la librería IronXL C# con varias funciones para editar, borrar, estilizar y perfeccionar sus libros de Excel.

Documentación de la biblioteca IronXL