none
Leer desde C# un rango de celdas de Excel

    Question

  • Hola, necesito leer de un archivo en excel, un rango de celdas, por ejemplo

    de la hoja1 : rango 1 (A5:f15)

    rango2(A20:f30)

    como puedo hacer esto.

     

    gracias por la ayuda

     

     


    Ricardo Cabra Ingeniero de Sistemas
    Thursday, April 15, 2010 5:03 AM

Answers

  • Revisa este enlace: http://labloguera.net/blogs/elperucho/archive/2007/04/14/leyendo-un-hoja-de-excel-con-c.aspx
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Proposed as answer by chisigo Thursday, April 15, 2010 11:07 AM
    • Marked as answer by Ricardo Cabra Saturday, April 17, 2010 3:34 AM
    Thursday, April 15, 2010 7:21 AM
  • Si no te queda claro también tienes este link:

    http://support.microsoft.com/default.aspx/kb/316934/es?p=1

    • Marked as answer by Ricardo Cabra Saturday, April 17, 2010 3:34 AM
    Thursday, April 15, 2010 11:07 AM
  • Hola, Ricardo:

    Si tu intención es leer el rango de celdas A5:F15 de la hoja llamada Hoja1, utilizando el ISAM de Excel del motor Microsoft Jet lo harías de la siguiente manera:

             using (OleDbConnection cnn = new OleDbConnection(
                    "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=C:\\Mis documentos\\Libro1.xls;" +
                    "Extended Properties='Excel 8.0;HDR=No'"))
                {
                   string sql = "SELECT * FROM [Hoja1$A5:F15]";

                    OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);

                    DataTable dt = new DataTable("RangoCeldas");

                    da.Fill(dt);

                    this.dataGridView1.DataSource = dt;

                }

    Fíjate en la consulta SQL de selección, la cual hace referencia al rango de celdas sin nombre A5:F15 existente en la Hoja1. Es decir, se indica el nombre de la hoja seguido del rango de celdas. Por supuesto, tienes que encerrar el nombre entre corchetes, tal y como aparece en el ejemplo.

    Pero si deseas seleccionar un rango de celdas con nombre llamado Rango1, entonces la consulta SQL de selección sería la siguiente:

       string sql = "SELECT * FROM [Rango1]";

    En este caso no es necesario encerrar el nombre entre corchetes, siempre y cuando el nombre no tenga espacios en blanco o signos poco comunes, aunque se aconseja que el nombre lo encierres entre corchetes.

    Por último, si tu intención es seleccionar toda la hoja de cálculo llamada Hoja1, entonces ejecutarías:

     string sql = "SELECT * FROM [Hoja1$]";

    Es decir, el nombre de la hoja debe acabar con el signo $, y en éste caso, también es necesario que encierres el nombre de la hoja entre corchetes.

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    Friday, April 16, 2010 12:18 PM

All replies

  • Revisa este enlace: http://labloguera.net/blogs/elperucho/archive/2007/04/14/leyendo-un-hoja-de-excel-con-c.aspx
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Proposed as answer by chisigo Thursday, April 15, 2010 11:07 AM
    • Marked as answer by Ricardo Cabra Saturday, April 17, 2010 3:34 AM
    Thursday, April 15, 2010 7:21 AM
  • Si no te queda claro también tienes este link:

    http://support.microsoft.com/default.aspx/kb/316934/es?p=1

    • Marked as answer by Ricardo Cabra Saturday, April 17, 2010 3:34 AM
    Thursday, April 15, 2010 11:07 AM
  • Hola, Ricardo:

    Si tu intención es leer el rango de celdas A5:F15 de la hoja llamada Hoja1, utilizando el ISAM de Excel del motor Microsoft Jet lo harías de la siguiente manera:

             using (OleDbConnection cnn = new OleDbConnection(
                    "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=C:\\Mis documentos\\Libro1.xls;" +
                    "Extended Properties='Excel 8.0;HDR=No'"))
                {
                   string sql = "SELECT * FROM [Hoja1$A5:F15]";

                    OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);

                    DataTable dt = new DataTable("RangoCeldas");

                    da.Fill(dt);

                    this.dataGridView1.DataSource = dt;

                }

    Fíjate en la consulta SQL de selección, la cual hace referencia al rango de celdas sin nombre A5:F15 existente en la Hoja1. Es decir, se indica el nombre de la hoja seguido del rango de celdas. Por supuesto, tienes que encerrar el nombre entre corchetes, tal y como aparece en el ejemplo.

    Pero si deseas seleccionar un rango de celdas con nombre llamado Rango1, entonces la consulta SQL de selección sería la siguiente:

       string sql = "SELECT * FROM [Rango1]";

    En este caso no es necesario encerrar el nombre entre corchetes, siempre y cuando el nombre no tenga espacios en blanco o signos poco comunes, aunque se aconseja que el nombre lo encierres entre corchetes.

    Por último, si tu intención es seleccionar toda la hoja de cálculo llamada Hoja1, entonces ejecutarías:

     string sql = "SELECT * FROM [Hoja1$]";

    Es decir, el nombre de la hoja debe acabar con el signo $, y en éste caso, también es necesario que encierres el nombre de la hoja entre corchetes.

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    Friday, April 16, 2010 12:18 PM
  • gracias a todos por la ayuda... me servio un resto...

     

     


    Ricardo Cabra Ingeniero de Sistemas
    Saturday, April 17, 2010 3:34 AM