Publicidad

Exportar Dataset a Excel


Por Alex el 04/08/2008, Comentar el artículo

Comparte este artículo:      




Para exportar dataSet a Excel utilizaremos el espacio de nombre Microsoft.Office.Interop.Excel, que encontraremos instalando el Microsoft Visual Studio 2005 Tools para Office, y crearemos libros y hojas donde insertaremos los datos del DataSet.


Pasar datos a Excel es de las acciones más comunes que nos pueden pedir los clientes en las aplicaciones, y disponer de estos datos en DataSets es lo más normal para nosotros. Ahora hay que ver cómo convertimos ese dataSet en un Excel.

Para realizar la exportación creamos una clase con el método exportar al que pasaremos el nombre del fichero Excel resultante, el nombre de las hojas del Excel (tantos como datatables tenga el dataset) y, el dataset con los datos.

El dataset puede contener varios DataTables así que el método creará una hoja de Excel por cada datatable del dataset.

Vamos a ver en profundidad el método de creación del Excel.

Como he comentado anteriormente le pasamos el nombre que recibirá el fichero de Excel cuando lo guardamos en disco, un array de strings que son los nombres de las hojas y el dataset con los datos

public static void Export(string ExcelName, string[] sheets, DataSet DS) {

Esta línea sólo interesa a los que tenemos instalados en diferentes idiomas las aplicaciones. Si no se pone el programa genera un error como este:

Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");

Ponemos el código dentro de un control de errores.

try {

Creamos la aplicación Excel

Application _excel = new Application();

Creamos el libro que vamos a utilizar

Workbook _wBook = _excel.Workbooks.Add(Missing.Value);

Por cada tabla dentro del dataset creamos una hoja del libro de Excel.

for (int idx = 0; idx < DS.Tables.Count; idx++) {

Creamos la nueva hoja.

Worksheet _sheet = (Worksheet)_wBook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);

Damos nombre a la hoja, en el ejemplo pasamos el nombre a través de un array desde la aplicación.

_sheet.Name = sheets[idx];

Recorremos la tabla y rellenamos los títulos de las columnas.

for (int i = 0; i < DS.Tables[idx].Columns.Count; i++) {
sheet.Cells[1, i + 1] = DS.Tables[idx].Columns[i].ColumnName.ToString();
}

Asignamos un rango de celdas (los títulos) para poder cambiarles el color y el fondo.

Range rng = (Range)_sheet.Cells[1, DS.Tables[idx].Columns.Count];
rng.EntireRow.Font.Bold = true;
rng.EntireRow.Interior.ColorIndex = 3;

Y rellenamos las filas y columnas con los datos del datatable correspondiente.

for (int i = 0; i < DS.Tables[idx].Rows.Count; i++) {
  for (int k = 0; k < DS.Tables[idx].Columns.Count; k++) {
   sheet.Cells[i + 2, k + 1] =
DS.Tables[idx].Rows[i].ItemArray[k];
  } }

Ahora toca guardar el Excel en disco. Recogemos la ruta donde guardarlo del web.config o del app.config

string path = config.ConfigurationSettings.AppSettings["pathExcel"];
ExcelName = path + ExcelName + ".xls";

Si el fichero ya existe lo borramos

if (ficheros.File.Exists(ExcelName)) {
  ficheros.File.Delete(ExcelName);
}

Creamos el fichero en disco.

excel.ActiveCell.Worksheet.SaveAs(ExcelName, XlFileFormat.xlExcel8, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

Si ponemos Visible a TRUE en los programas Windows abrirá el Excel.

_excel.Visible = true;

deleteProcess es un método para eliminar el proceso del EXCEL por si se queda colgado en el ordenador.

deleteProcess();

Definimos el control de errores.

catch (Exception EX) {
string ss = EX.Message;
}

Hay dos ejemplos para utilizar la librería de uno en Windows forms y otro en entorno web.

Y dos clases diferentes para exportar a Excel una ExporToExcel para utilizar con office 2007 y otra ExportToExcel11 para utilizar con Office 2003.

Como requisito hay que instalar Microsoft Visual Studio 2005 Tools para Office Second Edition Runtime (VSTO 2005 SE) (x86).

Enlaces relacionadas:

Ejemplos version office 2003 
Ejemplos version office 2007 
Clase ExportToExcel (renombrar a c) 

Y esto es todo!!!
Saludos
Alex.


Si te ha gustado el artículo compartelo en:      



También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.