Ver Mensaje Individual
  #13 (permalink)  
Antiguo 09/01/2008, 14:29
hunabku
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Ayuda con Excel

Cita:
Iniciado por Kurace Ver Mensaje
Yo tuve un problema parecido, pero lo solucioné así:

Código PHP:
        private void cmdInformeUser_Click(object senderSystem.EventArgs e)
        {
            
// Utilizamos una librería externa llamada "ExportToExcel" para poder realizar la operación
            // de escribir en el fichero de Excel los datos de la base de datos
            //
            // Lo hemos utilizado de CodeProject de esta URL:
            // http://www.codeproject.com/KB/office/Excel_Export.aspx
            
ExportToExcel.ExcelExport objExport = new ExportToExcel.ExcelExport();

            
// Definimos el directorio temporal
            
objExport.TempFolder = @"\temp\";
            // Definimos el directorio de la plantilla
            objExport.TemplateFolder = @"
template";
            // Definimos el estilo del XLS
            objExport.XSLStyleSheetFolder = @"
XSLStyleSheet";
            // Limpiamos de ficheros temporales, puesto que cada vez que se crea un fichero de Excel,
            // se van acumulando. De este modo se impide que ocurra.
            objExport.CleanUpTemporaryFiles();

            // Definimos la consulta
            string sSel = "
select idUsernamesurnamescompanyniftelephonemobilefaxemailcountrycityaddressnumberfloorcplogin from users order by idUser desc";
            // Definimos el fichero
            string fichero="";

            // Definimos las variables para realizar la consulta a la base de datos
            SqlDataAdapter da;
            DataTable dt = new DataTable();
            System.Data.SqlClient.SqlCommandBuilder commbuilder;
            System.Data.DataSet dset = new System.Data.DataSet();
    
            try
            {
                // Abrimos la conexión y rellenamos los datos al dataset
                da = new SqlDataAdapter(sSel, conexion);
                commbuilder = new System.Data.SqlClient.SqlCommandBuilder(da);
                da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                da.Fill(dset);
                // Metemos datos al DataGrid
                this.dg.DataSource = dset;
                this.dg.DataBind();
            }
            // Si hay error, se muestra
            catch(Exception ex)
            {
                Response.Write("
Error" + ex.Message);
            }
            // Transformamos los datos de la tabla de la Grid en un formato que pueda ser leído
            // por Excel
            fichero=objExport.TransformDataTableToExcel(dset.Tables[0],true);

            // Lo exportamos a un fichero (nos aparecerá una ventanita diciendo si desea guardar
            // el fichero
            objExport.SendExcelToClient(fichero);
        } 
Sin problemas y funciona correctamente. Además me pasaba cosas raras (con el código que se ha puesto de los primeros) con Vista y con XP funcionaba bien. Pero fue hacer eso y ya no hay fallo...

Es mejor ponerlo en una carpeta aparte, para que no dé fallos. En mi caso lo hice con temp.

Saludos.
Ya lo cheque Gracias y funciona bien solo que hay un problema cuando hace la consulta digamos unos 100,000 registros en la hoja de excel solo caben 65,000 y no me aparecen los demas, pero lo adapte con el codigo que gentilmente me envio txarly, pero cuando export a tal informacion me sige enviando la pantalla de error