none
Necesito extraer registro de un archivo excel para migrarlo a una BD

    Pregunta

  • Saludos,

    Resulta que estoy realizando un proyecto y uno de los requerimiento es que migre informacion de unos reportes en hojas de excel a sql utilizando c#.

    Use la libreria LinqToExcel , todo funciona bien cuando en la hoja excel esta solo las columnas y sus registros.

    ,pero al momento de ponerle un titulo oh encabezado dentro de la hoja no me identifica las columnas

    que necesito y me lansa un error. 

    ''ProductID' is not a valid column name. Valid column names are: 'F1', 'F2', 'Listado de productos', 'F4', 'F5', 'F6', 'F7', 'F8', 'a''.

    quisiera saber si hay una forma de especificar  solo las columnas que quiero oh si hay otra libreria con la cual pueda hacer eso me es de mucha importancia por que es para un proyecto de un trabajo gracias de antemano.




    • Editado AleBeras sábado, 30 de junio de 2018 5:15
    sábado, 30 de junio de 2018 4:45

Todas las respuestas

  • Podrías usar las librerías de OpenXml (descarga gratuita desde Microsoft) y "parsear" directamente el contenido del Excel, saltándote las filas y/o columnas que quieras. Requiere escribir mucho más código que usando LinqToExcel, pero a cambio te da flexibilidad completa y te permita hacer de todo con el Excel.

    https://docs.microsoft.com/en-us/office/open-xml/how-to-parse-and-read-a-large-spreadsheet

    sábado, 30 de junio de 2018 7:24
  • Yo utilizaría ClosedXml para leer el archivo porque LinqToExcel no tiene mucha flexibilidad.  Veo que para su caso particular podría servir ya sea especificar un rango con nombre, pero eso obliga a los usuarios a dar nombres a los rangos donde están las tablas, o bien solicitar a LinqToExcel que lea un rango de celdas específico, que puede empezar en la fila 2 o 3 o la que sea que contenga los títulos de fila.  El problema es cómo entonces define uno cuántas líneas debe cubrir el rango.

    Entonces en general, mejor ClosedXml o bien OpenXml como dice Alberto.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    sábado, 30 de junio de 2018 8:13
  • hola

    La primer row del excel define los nombres de las columnas, estos es un standar, si dejas la primer row vacia esta claro que rompes con la especificacion, esto aplica porque por debajo la libreria usa ado.net

    Si analizas la documentacion

    LinqToExcel

    veras el titulo "Query a worksheet without a header row"

    puede consultar el excel, pero perderas la capacidad de hacerlo por el nombre de las columnas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 2 de julio de 2018 13:57