private void ExportToSpreadsheet(DataSet dsExcel) { try { CarlosAg.ExcelXmlWriter.Workbook book = new CarlosAg.ExcelXmlWriter.Workbook(); //Crear propiedades del excel CrearPropiedades(book); //Add styles to the workbook GenerarEstilos(book.Styles); // Add a Worksheet with some data GenerarHojas(book.Worksheets, dsExcel); SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Excel|*.xls"; saveFileDialog1.Title = "Save an Excel File"; saveFileDialog1.FileName = DateTime.Now.ToString("yyyy-MM-dd") + " PRODUCTO"; saveFileDialog1.ShowDialog(); if (saveFileDialog1.FileName != string.Empty) { book.Save(saveFileDialog1.FileName); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void GenerateExcelReport(DataTable dtTable, DataTable dtLength, string strFilePath, string ReportName, string strFileName) { //Add a workbook CarlosAg.ExcelXmlWriter.Workbook book = new CarlosAg.ExcelXmlWriter.Workbook(); #region SheetProperties // Specify which Sheet should be opened and the size of window by default book.ExcelWorkbook.ActiveSheetIndex = 1; book.ExcelWorkbook.WindowTopX = 100; book.ExcelWorkbook.WindowTopY = 200; book.ExcelWorkbook.WindowHeight = 7000; book.ExcelWorkbook.WindowWidth = 8000; // Some optional properties of the Document book.Properties.Author = "Secure Proctor Report"; book.Properties.Title = "Excel Export"; book.Properties.Created = DateTime.Now; #endregion #region CellStyle WorksheetStyle CellStyle = book.Styles.Add("CellStyle"); CellStyle.Font.FontName = "Arial"; CellStyle.Font.Size = 11; CellStyle.Font.Color = "#000000"; CellStyle.Alignment.Horizontal = StyleHorizontalAlignment.Center; CellStyle.Alignment.Vertical = StyleVerticalAlignment.Center; CellStyle.Alignment.WrapText = false; CellStyle.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1); CellStyle.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1); CellStyle.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1); CellStyle.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1); CellStyle.NumberFormat = "@"; #endregion #region HeaderStyle WorksheetStyle HeaderStyle = book.Styles.Add("HeaderStyle"); HeaderStyle.Font.FontName = "Arial"; HeaderStyle.Font.Size = 11; HeaderStyle.Font.Bold = true; HeaderStyle.Alignment.Horizontal = StyleHorizontalAlignment.Center; HeaderStyle.Alignment.WrapText = false; HeaderStyle.Font.Color = "#000000"; HeaderStyle.Interior.Color = "#99CCFF"; HeaderStyle.Interior.Pattern = StyleInteriorPattern.Solid; HeaderStyle.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1); HeaderStyle.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1); HeaderStyle.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1); HeaderStyle.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1); #endregion // Add a Worksheet with some data Worksheet sheet = book.Worksheets.Add(ReportName); //Add row with some properties WorksheetRow row = sheet.Table.Rows.Add(); row.Index = 0; row.Height = 35; row.AutoFitHeight = true; //Set worksheet column names int ColNumber = 0; int ColumnLength = 100; int colSeedValue = 7; foreach (DataColumn dc in dtTable.Columns) { ///* SET COLUMN WIDTH - START */ if (dtLength.Rows[0][ColNumber] != null) { if (dtLength.Rows[0][ColNumber].ToString().Length != 0) { if (Convert.ToInt32(dtLength.Rows[0][ColNumber].ToString()) > dc.ColumnName.Length) { ColumnLength = Convert.ToInt32(dtLength.Rows[0][ColNumber].ToString()) * colSeedValue; } else { ColumnLength = dc.ColumnName.Length * colSeedValue; } } else { ColumnLength = dc.ColumnName.Length * colSeedValue; } } else { ColumnLength = dc.ColumnName.Length * colSeedValue; } ///* SET COLUMN WIDTH - END */ //ColumnLength = 100; sheet.Table.Columns.Add(new WorksheetColumn(ColumnLength)); WorksheetCell wcHeader = new WorksheetCell(dc.ColumnName, CarlosAg.ExcelXmlWriter.DataType.String, "HeaderStyle"); row.Cells.Add(wcHeader); ColNumber++; } foreach (DataRow dtrrow in dtTable.Rows) { //Add row to the excel sheet row = sheet.Table.Rows.Add(); //row.Height = 30; row.AutoFitHeight = true; //Loop through each column foreach (DataColumn col in dtTable.Columns) { WorksheetCell wc = new WorksheetCell(dtrrow[col.ColumnName].ToString(), DataType.String, "CellStyle"); row.Cells.Add(wc); } } //Save the work book book.Save(strFilePath); DownloadFile(strFilePath, strFileName); }
/// <summary> /// Método que exporta el reporte a excel. /// </summary> /// <param name="Dt_Datos">Tabla que contiene los datos que se mostraran en el reporte</param> /// <param name="Titulo">Titulo del reporte</param> /// <creo>Juan Alberto Hernández Negrete</creo> /// <fecha_creo>21 Mayo 2014 10:08 Hrs</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* /// <summary> /// Método que exporta la información de una datatable a un archivo excel en una ruta dada /// </summary> /// <param name="Dt_Datos">Tabla que contiene los datos que se mostrarán en el reporte</param> /// <param name="Titulo">Título del reporte</param> /// <param name="Ruta_Archivo">Ruta para escribir el archivo</param> /// <creo>Juan Alberto Hernández Negrete</creo> /// <fecha_creo>21-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* public void Exportar_Excel(DataTable Dt_Datos, string Titulo, string Ruta_Archivo) { try { CarlosAg.ExcelXmlWriter.Workbook Libro = new CarlosAg.ExcelXmlWriter.Workbook(); Libro.Properties.Title = "Reporte Museo de las momias de Guanajuato"; Libro.Properties.Created = DateTime.Now; Libro.Properties.Author = "Sistema de Administración, control y monitoreo del Museo de momias de Guanajuato"; //Creamos una hoja que tendrá el libro. CarlosAg.ExcelXmlWriter.Worksheet Hoja = Libro.Worksheets.Add(Titulo); //Agregamos un renglón a la hoja de excel. CarlosAg.ExcelXmlWriter.WorksheetRow Renglon = Hoja.Table.Rows.Add(); //Creamos el estilo cabecera para la hoja de excel. CarlosAg.ExcelXmlWriter.WorksheetStyle Estilo_Cabecera = Libro.Styles.Add("HeaderStyle"); Estilo_Cabecera.Font.FontName = "Tahoma"; Estilo_Cabecera.Font.Size = 10; Estilo_Cabecera.Font.Bold = true; Estilo_Cabecera.Alignment.Horizontal = StyleHorizontalAlignment.Center; Estilo_Cabecera.Font.Color = "#FFFFFF"; Estilo_Cabecera.Interior.Color = "#193d61"; Estilo_Cabecera.Interior.Pattern = StyleInteriorPattern.Solid; Estilo_Cabecera.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1, "Black"); Estilo_Cabecera.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1, "Black"); Estilo_Cabecera.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1, "Black"); Estilo_Cabecera.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1, "Black"); //Creamos el estilo cabecera para la hoja de excel. CarlosAg.ExcelXmlWriter.WorksheetStyle Estilo_Resaltar = Libro.Styles.Add("EstiloResaltar"); Estilo_Resaltar.Font.FontName = "Tahoma"; Estilo_Resaltar.Font.Size = 10; Estilo_Resaltar.Font.Bold = true; Estilo_Resaltar.Alignment.Horizontal = StyleHorizontalAlignment.Left; //Creamos el estilo contenido para la hoja de excel. CarlosAg.ExcelXmlWriter.WorksheetStyle Estilo_Contenido = Libro.Styles.Add("BodyStyle"); Estilo_Contenido.Font.FontName = "Tahoma"; Estilo_Contenido.Font.Size = 9; Estilo_Contenido.Font.Bold = false; Estilo_Contenido.Alignment.Horizontal = StyleHorizontalAlignment.Left; Estilo_Contenido.Font.Color = "#000000"; Estilo_Contenido.Interior.Color = "#FFFFFF"; Estilo_Contenido.Interior.Pattern = StyleInteriorPattern.Solid; Estilo_Contenido.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1, "Black"); Estilo_Contenido.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1, "Black"); Estilo_Contenido.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1, "Black"); Estilo_Contenido.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1, "Black"); Estilo_Contenido.Alignment.WrapText = true; // agregar las columnas a la hoja recorriendo Dt_Datos Array.ForEach(Dt_Datos.Columns.OfType <DataColumn>().ToArray(), columna => { Hoja.Table.Columns.Add(new CarlosAg.ExcelXmlWriter.WorksheetColumn(90)); }); // agregar nombre de la tabla y fecha Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Titulo, DataType.String, "EstiloResaltar")); Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell("", DataType.String, "EstiloResaltar")); Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(DateTime.Today.ToString("dd-MMM-yyyy"), DataType.String, "EstiloResaltar")); // si hay un rango de fechas seleccionado, agregarlo if (Dtp_Fecha_Inicio.Checked.Equals(true) || Dtp_Fecha_Termino.Checked.Equals(true)) { Renglon = Hoja.Table.Rows.Add(); Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Dtp_Fecha_Inicio.Text + " - " + Dtp_Fecha_Termino.Text, DataType.String, "EstiloResaltar")); } // si hay un usuario o tipo de operación seleccionado, agregar if (Cmb_Operacion.SelectedIndex > 0) { Renglon = Hoja.Table.Rows.Add(); Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Cmb_Operacion.Text, DataType.String, "EstiloResaltar")); } if (Cmb_Usuario.SelectedIndex > 0) { Renglon = Hoja.Table.Rows.Add(); Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Cmb_Usuario.Text, DataType.String, "EstiloResaltar")); } // validar la tabla if (Dt_Datos is DataTable && Dt_Datos != null && Dt_Datos.Rows.Count > 0) { Renglon = Hoja.Table.Rows.Add(); // recorrer las columnas en Dt_Datos para agregar las celdas encabezado foreach (DataColumn Columna in Dt_Datos.Columns) { if (Columna is DataColumn) { Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Columna.ColumnName.Replace("_", " "), "HeaderStyle")); } } int Contador_Columnas; int Total_columnas = Dt_Datos.Columns.Count; // recorrer las filas en Dt_Datos para agregar las celdas foreach (DataRow Dr in Dt_Datos.Rows) { Renglon = Hoja.Table.Rows.Add(); for (Contador_Columnas = 0; Contador_Columnas < Total_columnas; Contador_Columnas++) { Renglon.Cells.Add(new CarlosAg.ExcelXmlWriter.WorksheetCell(Dr[Contador_Columnas].ToString(), DataType.String, "BodyStyle")); } } } Libro.Save(Ruta_Archivo); } catch (IOException Ex) { throw Ex; } catch (Exception Ex) { throw Ex; } }