public override void GenerarEXCEL(string titulo = "")
        {
            string pathFile = "", cuentaBancoEmpresa = "";
            string id = "", empleadoId, cedulaRNC, nombre, cuentaBancoEmpleado = "", formaPago = "E";
            double sueldoNeto = 0;
            int    I          = 2;
            string formula    = "";

            OfficeDriver.ExcelDriver objExcel = new OfficeDriver.ExcelDriver();
            DataTable DTCuenta = null, DTEmpleado = null;

            try
            {
                if (MyData == null)
                {
                    return;
                }
                if (MyData.Rows.Count <= 0)
                {
                    return;
                }

                Cursor = Cursors.WaitCursor;

                objExcel.isOpenOffice = objUtil.IsOpenOfficeIntalled();

                if (objExcel.isOpenOffice == false && objUtil.IsMSExcelIntalled() == false)
                {
                    throw new Exception("MS EXCEL U OPEN OFFICE CAL NO INSTALLED");
                }


                //Buscamos la Cuenta Bancaria Para Pago de Nomina o Transferencia Bancaria
                objDB.LimpiarFiltros();
                objDB.AddFiltroIgualA("Empresa_Id", empresaID.ToString());
                objDB.AddFiltroIgualA("EsActivo", "1");
                objDB.AddFiltroIgualA("EsNomina", "1");
                DTCuenta = objDB.GetAll("TBANCOS_CUENTAS_BANCARIAS", 1, objDB.Filtros);
                if (DTCuenta.Rows.Count > 0)
                {
                    cuentaBancoEmpresa = objUtil.GetAsString("Codigo_Completo", DTCuenta.Rows[0]);
                }

                if (cuentaBancoEmpresa.Trim() == "")
                {
                    Cursor = Cursors.Default;
                    objUtil.MostrarMensajeError("No se ha Definido Cuenta Bancaria Empresa Para el Pago de Nomina");
                    return;
                }


                //Establecemos el Id de la Nomina
                id = "Nomina_" + nominaId.ToString() + "_" + empresaID.ToString();

                pathFile = GetFolderDocGenerados("Nomina") + @"\" + id + ".xls";
                if (File.Exists(pathFile))
                {
                    File.Delete(pathFile);
                }

                //objExcel.create(pathFile, true);
                objExcel.OpenWorkBook("");
                objExcel.SetCellValue("A1", "RNC");
                objExcel.SetCellValue("B1", "CUENTA ORIGEN");
                objExcel.SetCellValue("C1", "CUENTA DESTINO");
                objExcel.SetCellValue("D1", "MONTO A PAGAR");
                objExcel.SetCellValue("E1", "REGISTRO ID");
                objExcel.SetCellValue("F1", "NOMBRE");
                objExcel.SetCellValue("G1", "FORMA PAGO");


                formula = "Sum(D2:D";

                foreach (DataRow item in MyData.Rows)
                {
                    this.Cursor = Cursors.WaitCursor;

                    empleadoId          = objUtil.GetAsString("Empleado_Id", item, "0");
                    cedulaRNC           = objUtil.GetAsString("CedulaRNC", item);
                    nombre              = objUtil.GetAsString("Nombre", item);
                    sueldoNeto          = objUtil.GetAsDouble("Monto_APagar", item, 0);
                    cuentaBancoEmpleado = objUtil.GetAsString("Cuenta_Banco_Destino", item, "");
                    formaPago           = objUtil.GetAsString("Forma_Pago", item, "CHK");

                    if (cuentaBancoEmpleado.Trim() == "")
                    {
                        //Buscamos la Cuenta de Banco de Dicho Empleado
                        DTEmpleado = objDB.GetById("TRRHH_EMPLEADOS", empleadoId, "Empleado_Id");
                        if (DTEmpleado.Rows.Count > 0)
                        {
                            cuentaBancoEmpleado = objUtil.GetAsString("Cuenta_Banco_No", DTEmpleado.Rows[0]);
                        }
                    }

                    objExcel.SetCellValue("A" + I.ToString(), EMPRESA_RNC);
                    objExcel.SetCellValue("B" + I.ToString(), cuentaBancoEmpresa);
                    objExcel.SetCellValue("C" + I.ToString(), cuentaBancoEmpleado);
                    objExcel.SetCellValue("D" + I.ToString(), sueldoNeto);
                    objExcel.SetCellValue("E" + I.ToString(), I - 1);
                    objExcel.SetCellValue("F" + I.ToString(), nombre);
                    objExcel.SetCellValue("G" + I.ToString(), formaPago);


                    I++;
                    this.Cursor = Cursors.Default;
                }
                formula += (I - 1).ToString() + ")";


                objExcel.SetCellFormula("D" + I.ToString(), formula);
                objExcel.Autofit();
                objExcel.SaveAS(pathFile);
                objExcel.ShowBook();

                Cursor = Cursors.Default;
            }
            catch (Exception ex)
            {
                objUtil.MostrarMensajeError(ex.Message);
            }
            finally
            {
                Cursor = Cursors.Default;
                //objExcel.CloseBook();
            }
        }
        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();
            }
        }