void generarExcel() { int conteo = 0; double porc = 0; object valor = null; string numberFormat = ""; try { //Validamos excel u openoffice deben estar instalado if (util.IsMSExcelIntalled() == false && util.IsOpenOfficeIntalled() == false) { throw new Exception("USTED NO TIENE EXCEL U OPEN OFFICE INSTALADO"); } if (util.IsMSExcelIntalled()) { excel.isOpenOffice = false; Text = "EXPORT TO MS EXCEL"; } else { excel.isOpenOffice = true; Text = "EXPORT TO OPEN OFFICE CALC"; } Cursor = Cursors.WaitCursor; conteo = DTData.Rows.Count; if (titulo.Trim() != "") { conteo += 2; } if (subTitulo1.Trim() != "") { conteo++; } if (subTitulo2.Trim() != "") { conteo++; } if (conteo > 0) { porc = (fila / conteo) * 100; } lblPorcentaje.Text = "0/" + conteo.ToString() + " (0%)"; //En la primera fila se escribe las columnas progressBar1.Minimum = 0; progressBar1.Maximum = conteo; progressBar1.Step = 1; //Abrimos el archivo de excel Cursor = Cursors.WaitCursor; excel.OpenWorkBook(""); //Pasamos las columnas en el encabezado escribirColumnas(); format.bold = false; format.size = 12; format.backGroundColor = Color.Transparent; foreach (DataRow item in DTData.Rows) { Cursor = Cursors.WaitCursor; col = 1; //Debemos hacer un bucle por cada columna foreach (MyColumna myCol in colList) { numberFormat = ""; valor = db.GetValue(myCol.NombreCampo, item); if (db.isString) { numberFormat = "@"; } excel.SetCellValue(fila, col, valor, numberFormat); excel.SetCellFormat(fila, col, format); col++; } //Mostramos el procentaje Cursor = Cursors.Default; progressBar1.PerformStep(); porc = ((fila - 1) / (double)conteo) * 100; lblPorcentaje.Text = (fila - 1).ToString() + "/" + conteo.ToString() + " (" + porc.ToString("N2") + "%)"; fila++; col = 1; DRItem = item; } //Agregamos funcion para sumar if (fila > 2) { addFunctionSum(); } //Agregamos los titulos; escribirTitulos(); //Ajustar tamano de las columnas excel.Autofit(colList.Count); //Mostramos el archivo generado excel.ShowBook(); Close(); } catch (Exception ex) { excel.CloseBook(); Cursor = Cursors.Default; util.MostrarMensajeError(ex.Message); Close(); } }