txt separado punto por para notas delimitado convertir configurar como comas coma bloc archivos archivo abrir excel interface

separado - convertir txt a excel 2013



¿Cómo puedo interactuar programáticamente una hoja de cálculo de Excel? (6)

Estamos leyendo y manipulando Excel-Data a través de Apache POI , que no está completo en la decodificación de archivos de Excel (concretamente, las celdas de fórmula no son completamente compatibles) pero nuestros clientes están muy contentos con nosotros.

POI es una biblioteca de Java, así que si usted es una tienda pura de Windows puede haber otras opciones más naturales, pero como dije, nuestra experiencia con POI es muy buena, la gente está contenta.

Además: creo haber oído hablar de los controladores ODBC de Excel. ¿Quizás esto es lo que quiere / necesita? (Lo siento, nunca he trabajado con ellos)

Tengo una solicitud para un trabajo por contrato de una organización que usa Excel como base de datos y desea trabajar en los datos de Excel a través de una base de datos real. (Sí, lo sé, no importa ...)

El cliente tiene una hoja de Excel que usan internamente para realizar un seguimiento de algunos programas gubernamentales. Los datos de esta hoja de Excel solían importarse manualmente en una base de datos SQL a través de CSV como formato intermedio y estaban disponibles a través de una pequeña aplicación web. Los cambios en la hoja de cálculo o en la base de datos se realizaron manualmente (por diferentes personas) y se tuvieron que sincronizar manualmente.

La especificación para la nueva funcionalidad incluye:

  • cargue el archivo de Excel en la aplicación web
  • hacer pequeños cambios a través de la aplicación web (este bit es, por supuesto, una obviedad)
  • exportar ocasionalmente los datos a Excel

La hoja de cálculo (de hecho, es un par de ellas en un libro de trabajo) implementa algunas pautas necesarias para interactuar con otras instituciones y, por lo tanto, tiene que permanecer estructuralmente igual antes y después de la importación. Contiene una gran cantidad de formato, columnas ocultas y botones de clasificación, así como una gran cantidad de enlaces de datos entre las celdas en las diferentes hojas.

No quiero tener que reproducir la hoja de cálculo desde cero para entregar la exportación, ni quiero extraer manualmente las columnas adecuadas en CSV antes de realizar la importación. Estoy buscando una forma de cargar el Excel, "consultar" ciertos campos, escribirlos en el DB y luego cargar los datos de nuevo desde el DB y manipular solo los contenidos de las celdas apropiadas.

¿Hay alguna manera de interactuar programáticamente con una hoja de cálculo existente y solo leer o cambiar los bits que necesita?


Excel es una ''Aplicación compatible con COM'' y, como tal, puede usar COM para acceder y manipular los datos en un documento de Excel. No dices qué plataforma estás usando, pero si es .NET, entonces es realmente muy fácil. Consulte http://support.microsoft.com/kb/302084 para saber cómo comenzar con C #.

Si no está utilizando .net, funcionará cualquier idioma que pueda interactuar con un componente COM.


La misma API que usa VBA está disponible a través de una interfaz COM externa. Hay bastantes libros sobre el tema. Recomiendo el O''Reilly one por Steven Roman pero sus gustos pueden variar.



No especifica un idioma, por lo tanto, si es independiente del idioma .Net le ofrece algunas clases muy potentes para el manejo de datos:

para abrir un archivo csv:

Imports System.Data.OleDb, Imports Excel = Microsoft.Office.Interop.Excel

Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataFolder + "/;Extended Properties=''text;HDR=Yes''" Dim conn As New System.Data.OleDb.OleDbConnection(ConnectionString) conn.Open() Dim CommandText As String = CommandText = "select * from [" + CSVFileName + "]" If Filter.Length > 0 Then CommandText += " WHERE " + Filter End If Dim daAsset As New OleDbDataAdapter(CommandText, conn) Dim dsAsset As New DataSet daAsset.Fill(dsAsset, "Asset")

abrir una hoja en un libro de trabajo es muy similar: especifica el nombre de la hoja y luego puede llenar un DataSet con la hoja completa; a continuación, puede acceder a las tablas (). Filas () del DataSet para obtener cada fila y campo, iterar cada fila, etc.


Otro enfoque sería escribir una función de Excel que se comunique directamente con la base de datos y devuelva el resultado como una matriz.

Si crees que este enfoque funcionaría bien, podrías probar XLLoop : esto te permite escribir fácilmente funciones de excel en Java, Python, Ruby, Perl, R, Lisp, Erlang.