locked
exportar excel a gridview c# RRS feed

  • Pregunta

  • buenos dias

    tengo un detalle tengo unos datos en un excel que los quiero mostrar en una grilla pero quiero que se empiece a mostrar a partir de la tercera fila, me pueden apoyar con esto, estoy usando actualmente esto pero no se como contrar las filas

    private void BuscarArchivo(string Archivo)
            {
                 System.Data.OleDb.OleDbConnection MyConnection;
                System.Data.DataSet DtSet;
                System.Data.OleDb.OleDbDataAdapter MyCommand;

                 MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source='" +         Archivo + "';Extended Properties=Excel 12.0;");
                MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [HOJA2$]", MyConnection);
                MyCommand.TableMappings.Add("Table", "Net-informations.com");
                DtSet = new System.Data.DataSet();
                MyCommand.Fill(DtSet);
                dgvusuarios.DataSource = DtSet.Tables[0];

            }

    jueves, 11 de febrero de 2016 17:06

Respuestas

Todas las respuestas

  • Hola:

     Podrías valerte de SpreadSheetLight el cual hace el trabajo de interactuar con Excel una tarea muy sencilla.

    private void Import()
            {
                //usamos el objeto FileSteam para recuperar el archivo
                FileStream fs = new FileStream("TestExcel.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                //
                //Creamos el obejto SLDocument para cargar el archivo Excel
                SLDocument sl = new SLDocument(fs);
    
                //refinimos el indice de la fila de donde comenzaremos a leer
                int rowIndex = 2;
    
                //recorremos el objeto SLDocument mediante un ciclo While
                //este ciclo recorre el documento miestras no se encuentre una celda vacia
                while (!string.IsNullOrEmpty(sl.GetCellValueAsString(rowIndex, 1)))
                {
                    //tomamos los valores de las celdas y lo pasamos a las respectivas columnas del control DataGridView
                    dgvDatos.Rows.Add(sl.GetCellValueAsString(rowIndex, 1), sl.GetCellValueAsString(rowIndex, 2),
                        sl.GetCellValueAsString(rowIndex, 3), sl.GetCellValueAsString(rowIndex, 4));
    
                    //incrementeamos una unidad al indice de la fila para continuar con el recorrido
                    rowIndex += 1;
                }
            }

    Aquí el ejemplo completo:

    Trabajar con archivos Excel desde WindowsForms (SpreadSheetLight)


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 11 de febrero de 2016 17:14
  • si gracias ya había hecho un excel con spreadsheetlight y funciona muy bien

    pero ahora me marca el error en FileStream y no se como habilitarlo, 

      FileStream = new FileStream("TestExcel.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

    jueves, 11 de febrero de 2016 17:41
  • Hola:

    pero ahora me marca el error en FileStream y no se como habilitarlo, 

     Pero que error te marca?, en la linea que pusiste se considera que el archivo "TextExcel.xlsx" existe en el mismo directorio desde donde se ejecuta la aplicación.


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 11 de febrero de 2016 17:43
  • dice FileStream no existe en el contexto actual
    jueves, 11 de febrero de 2016 17:45
  • Mira:

    FileStream Class

     Requieres del espacio de nombres System.IO


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 11 de febrero de 2016 17:56
  • tienes razon lo estaba pasando por alto, la verdad nunca habia llenado una grilla esta funcion, por eso estoy batallando, ahora en esta linea me arroja el error de: Al control DataGridView no se puede agregar ninguna fila que no tenga columnas. Las columnas se deben agregar primero.

                    dgvusuarios.Rows.Add(sl.GetCellValueAsString(rowIndex, 1), sl.GetCellValueAsString(rowIndex, 2),
                        sl.GetCellValueAsString(rowIndex, 3), sl.GetCellValueAsString(rowIndex, 4)); 

    jueves, 11 de febrero de 2016 18:19
  • Hola:

     Pues el mensaje lo dice todo.

      Tienes que crear las columnas del dgvUsuarios antes de querer meterles información, en tiempo de diseño agrega las columnas al control y listo, después podrás cargar el Excel sin problemas.


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 11 de febrero de 2016 18:23