You are on page 1of 55

Cmo importar datos de Excel a SQL Server

Id. de artculo: 321686 - Ver los productos a los que se aplica este artculo

Advertencia: Artculo de Traduccin Automtica, vea la exencin de responsabilidad. Haga clic aqu para ver en paralelo el artculo de traduccin automtica y el artculo original en ingls. Expandir todo | Contraer todo

En esta pgina Resumen


En este artculo paso a paso se muestra cmo importar datos de hojas de clculo de Microsoft Excel en bases de datos de Microsoft SQL Server mediante una variedad de mtodos.

Descripcin de la tcnica
Para importar datos de Excel, los ejemplos de este artculo con: SQL Server Data Transformation Services (DTS) Microsoft SQL Server 2005 Integration Services (SSIS) Servidores vinculados de SQL Server Consultas distribuidas de SQL Server ActiveX Data Objects (ADO) y el proveedor Microsoft OLE DB para SQL Server ADO y el proveedor Microsoft OLE DB para Jet 4.0

Requisitos
La lista siguiente describe el hardware recomendado, software, infraestructura de red y los service Pack que se necesitan: Instancia disponible de Microsoft SQL Server 7.0 o 2000 de Microsoft SQL Server o Microsoft SQL Server de 2005 Microsoft Visual Basic 6.0 de los ejemplos de ADO que utilice Visual Basic Partes de este artculo se supone que est familiarizado con los temas siguientes: Servicios de transformacin de datos Los servidores vinculados y las consultas distribuidas Desarrollo de ADO en Visual Basic

Ejemplos
Importacin frente a anexar Las instrucciones de SQL de ejemplo que se utilizan en este artculo muestran las consultas de Create Table que importacin datos de Excel en una nueva tabla de SQL Server con el

seleccionar...EN...DE la sintaxis. Puede convertir estas instrucciones para consultas de datos anexados mediante el uso de INSERT INTO...SELECCIONE...Continen de sintaxis mientras haciendo referencia a los objetos de origen y destino como se muestra en estos ejemplos de cdigo.

Uso DTS o SSIS Puede utilizar el Asistente para importacin de servicios de transformacin de datos (DTS) de SQL Server o SQL Server de importacin y el Asistente para exportacin para importar datos de Excel en las tablas de SQL Server. Cuando se recorre el asistente y seleccionar las tablas de origen de Excel, recuerde que los nombres de objeto de Excel que se anexan con un signo de dlar ($) representan hojas de clculo (por ejemplo, Sheet1$) y que los nombres de objeto simple sin el signo de dlar representan Excel rangos con nombre.

Utilizar un servidor vinculado Para simplificar las consultas, puede configurar un libro de Excel como un servidor vinculado en SQL Server. Para obtener informacin adicional, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base: 306397 HOWTO: Usar Excel con SQL Server de servidores vinculados y consultas distribuidas El cdigo siguiente importa los datos de la hoja de clculo de los clientes en el servidor vinculado de Excel "EXCELLINK" en una nueva tabla de SQL Server, denominado XLImport1: SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$] Tambin puede ejecutar la consulta en el origen de una manera de atravesar mediante OPENQUERY como sigue: SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK, 'SELECT * FROM [Customers$]') Utilizar consultas distribuidas Si no desea configurar una conexin persistente al libro de Excel como un servidor vinculado, puede importar datos para un propsito especfico mediante el OPENDATASOURCE o la funcin OPENROWSET. Ejemplos de cdigo siguientes tambin importacin los datos de la hoja de clculo de Excel clientes en nuevas tablas de SQL Server: SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$] SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\test\xltest.xls', [Customers$]) SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]') Utilizar ADO y SQLOLEDB

Cuando est conectado a SQL Server en una aplicacin de ADO con OLE DB de Microsoft para SQL Server (SQLOLEDB), puede utilizar la misma sintaxis de "consulta distribuida" en la seccin Utilizar consultas distribuidas para importar datos de Excel a SQL Server. En el siguiente ejemplo de cdigo de Visual Basic 6.0 requiere que agregue una referencia de proyecto ActiveX Data Objects (ADO). Este ejemplo de cdigo tambin muestra cmo utilizar OPENDATASOURCE y OPENROWSET en una conexin de SQLOLEDB. Dim cn As ADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _ "Initial Catalog=<database>;User ID=<user>;Password=<password>" 'Import by using OPENDATASOURCE. strSQL = "SELECT * INTO XLImport6 FROM " & _ "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _ "'Data Source=C:\test\xltest.xls;" & _ "Extended Properties=Excel 8.0')...[Customers$]" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff 'Import by using OPENROWSET and object name. strSQL = "SELECT * INTO XLImport7 FROM " & _ "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _ "'Excel 8.0;Database=C:\test\xltest.xls', " & _ "[Customers$])" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff 'Import by using OPENROWSET and SELECT query. strSQL = "SELECT * INTO XLImport8 FROM " & _ "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _ "'Excel 8.0;Database=C:\test\xltest.xls', " & _ "'SELECT * FROM [Customers$]')" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff cn.Close Set cn = Nothing Utilizar ADO y el proveedor Jet En el ejemplo de la seccin anterior utiliza ADO con el proveedor SQLOLEDB para conectar al destino de la importacin de Excel a SQL. Tambin puede utilizar el proveedor OLE DB para Jet 4.0 para conectarse al origen de Excel. El motor de base de datos Jet puede hacer referencia a bases de datos externas en las instrucciones de SQL mediante una sintaxis especial que tiene tres formatos diferentes:

[Ruta de acceso completa a la base de datos de Microsoft Access].[Nombre de la tabla] [Nombre ISAM;Cadena de conexin de ISAM].[Nombre de la tabla] [ODBC;Cadena de conexin ODBC].[Nombre de la tabla] Esta seccin utiliza el formato tercero para realizar una conexin ODBC a la base de datos de destino de SQL Server. Puede utilizar un nombre de origen de datos ODBC (DSN) o una cadena de conexin sin DSN: DSN: [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>] DSN-less: [odbc;Driver={SQL Server};Server=<server>;Database=<database>; UID=<user>;PWD=<password>] En el siguiente ejemplo de cdigo de Visual Basic 6.0 requiere que agregue una referencia de proyecto a ADO. Este ejemplo de cdigo muestra cmo importar datos de Excel a SQL Server a travs de una conexin ADO a travs del proveedor de Jet 4.0. Dim cn As ADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test\xltestt.xls;" & _ "Extended Properties=Excel 8.0" 'Import by using Jet Provider. strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _ "Server=<server>;Database=<database>;" & _ "UID=<user>;PWD=<password>].XLImport9 " & _ "FROM [Customers$]" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff cn.Close Set cn = Nothing Tambin puede utilizar esta sintaxis, que admite el proveedor Jet, para importar datos de Excel en otras bases de datos de Microsoft Access, bases de datos de acceso secuencial indizado (ISAM) del mtodo ("escritorio") o bases de datos ODBC.

Solucin de problemas
Recuerde que los nombres de objeto de Excel que se anexan con un signo de dlar ($) representan hojas de clculo (por ejemplo, Sheet1$) y que los nombres de objeto simple Excel rangos con nombre. En algunas circunstancias, especialmente al designar los datos de origen de Excel con el nombre de la tabla en lugar de una consulta de seleccin, se reorganizan las columnas de la tabla de destino de SQL Server en orden alfabtico.Para obtener

informacin adicional acerca de este problema con el proveedor Jet, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base: 299484 PRB: Las columnas se ordenan alfabticamente cuando se utiliza ADOX para recuperar columnas de tabla de Access Cuando el proveedor Jet determina que una columna de Excel contiene datos numricos y texto mixto, el proveedor Jet selecciona el tipo de datos "mayora" y devuelve valores no coincidentes como NULLs.For obtener informacin adicional acerca de cmo evitar este problema, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base: 194124 PRB: Valores de Excel devueltos como NULL utiliza OpenRecordset de DAO Volver al principio | Propocionar comentarios

Referencias
Para obtener informacin adicional acerca de cmo utilizar Excel como un origen de datos, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base: 257819 HOWTO: Usar ADO con datos de Excel desde Visual Basic o desde VBA Para obtener informacin adicional acerca de cmo transferir los datos a Excel, haga clic en los nmeros de artculo siguientes para verlos en Microsoft Knowledge Base: 295646 HOWTO: Transferir datos de origen de datos de ADO a Excel con ADO 247412 INFO: Mtodos para transferir datos a Excel desde Visual Basic 246335 HOWTO: Transferir datos desde un conjunto de registros ADO a Excel con automatizacin 319951 Cmo: Servicios de transferencia de datos a Excel utilizando la transformacin de datos de SQL Server 306125 Cmo: Importar datos desde SQL Server a Microsoft Excel Volver al principio | Propocionar comentarios

Propiedades
Id. de artculo: 321686 - ltima revisin: jueves, 05 de julio de 2012 - Versin: 5.0 La informacin de este artculo se refiere a: Palabras clave:
Microsoft Excel 2000 Standard Edition Microsoft SQL Server 2000 Standard Edition Microsoft SQL Server 2000 64-bit Edition Microsoft SQL Server 7.0 Standard Edition Microsoft Excel 2002 Standard Edition Microsoft Excel 97 Standard Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Workgroup Edition

kbhowtomaster kbjet kbmt KB321686 KbMtes

Traduccin automtica
IMPORTANTE: Este artculo ha sido traducido por un software de traduccin automtica de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artculos traducidos por un traductor humano y artculos traducidos automticamente para que tenga acceso en su propio idioma a todos los artculos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artculos traducidos automticamente pueden contener errores en el vocabulario, la sintaxis o la gramtica, como los que un

extranjero podra cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisin, error o dao ocasionado por una mala traduccin del contenido o como consecuencia de su utilizacin por nuestros clientes. Microsoft suele actualizar el software de traduccin frecuentemente. Haga clic aqu para ver el artculo original (en ingls): 321686

Volver al principio | Propocionar comentarios

Propocionar comentarios
Fue til esta informacin?
S No Un poco

Cunto esfuerzo ha dedicado personalmente para usar este artculo?


Muy poco Poco Moderado Mucho Muchsimo
Tpico de MS Excel Application Lifecycle
MS Excel proporciona muchas herramientas poderosas para disear, gestionar y analizar datos empresariales. Excel tambin es una forma fcil y barata de prototipos de nuevas aplicaciones de negocio.Con demasiada frecuencia, sin embargo, MS hojas de clculo Excel que son tiles para un usuario el poder que construy comienzan a ser utilizados por ms y ms gente, crece la hoja de clculo en las caractersticas y complejidad, y se copiado, modificado y enviado por correo electrnico alrededor. Antes de que te des cuenta, el esfuerzo para apoyar la aplicacin MS Excel empieza a exceder a los beneficios de negocios! Cuando llegue el momento en que su aplicacin MS Excel est fuera de control, es el momento de migrar la aplicacin de base de datos de Excel en una aplicacin de base de datos relacional. Esto eliminar todos los problemas multi-usuario, proporciona funciones de negocios confiables y repetibles, y mejorar la calidad y la consistencia de los datos subyacentes.

Convertir MS Excel a SQL Server


Convertir hojas de clculo Excel base de datos a una base de datos MS SQL Server proporciona una mucho ms estructurada, repetible enfoque ms a los procesos crticos de negocio. Hojas de clculo Excel proporcionan una flexibilidad infinita, pero a costa de los malos datos, y el coste de la gestin de una aplicacin distribuida que est destinado a slo uno o unos pocos usuarios. Base de datos SQL Server es compatible con los datos bien estructurados, y los datos repetibles y de alta calidad y procesos de flujo de trabajo, con nmero ilimitado de usuarios finales simultneos. La buena noticia es que la ACP puede migrar la hoja de clculo Excel a MS SQL Server, y hacer que su aplicacin de Excel ms estructurado, mientras que la preservacin de la integridad funcional de la original, original de hoja de clculo MS Excel.

MS Excel

SQL Server

Flujo de trabajo Actualizaciones concurrentes Seguridad Problemas de versiones

Ninguno (correo electrnico)

Proceso de flujo definido

No (usuario nico)

S (varios usuarios concurrentes)

Una contrasea para todos

Privilegios basados en funciones

Alto (archivo de datos sello)

Ninguno

Auditora-capacidad de

Bajo (fecha y comparaciones de correo electrnico)

Alta (pista de auditora completa)

Integridad de los datos Baja (algo limitado) Los datos de capacidad Limitado Estructuras de datos Piso: 2-dimensiones

Muy limitada Ilimitado Relacional: 3 dimensiones

El uso de MS Excel con SQL Server


Una vez que una aplicacin de Excel se ha convertido de una hoja de clculo de la base de datos SQL Server, los datos todava se pueden ver, exportar, y se analizaron en MS Excel! Todos estos datos, ecuaciones, y la manipulacin de datos se convierte en parte de una aplicacin estructurada, base de datos bien definido, que prev la mejora de la coherencia de entrada de datos, control de versiones mejorado como nuevas capacidades se aaden, y por lo general ms fciles, ms simples interfaces de usuario. Lo mejor de todo, los datos pueden ser controladas y puestas a disposicin a travs de seguridad basada en roles de seguridad a travs de Internet.

Leccin 7: Seguimos aprendiendo Vamos a abrir de nuevo la hoja que tendremos debidamente guardada, para poder seguir haciendo cambios en ella (ya sabes: Archivo-Abrir y encontrarla en el disco duro de nuestro PC), y una vez la tengamos en pantalla si habeis hecho todo correctamente la hoja deber presentar este aspecto:

- Lo primero que haremos ser seguir adecentndola un poco para que al tiempo que v tomando mejor aspecto vosotros veais cmo se hace y luego podais llevarlo a la prctica porque no olvides que es la nica manera de aprender, Excel o cualquier otra aplicacin, la prctica una y otra vez de lo que se vaya explicando. - Vamos a hacer una divisin de las celdas de la hoja para que quede todo ms presentable (en mi opinin), pues si tal como est picamos en el botn de Vista preliminar que debeis saber es este que est arriba en la barra de herramientas:

- La hoja la veremos de esta manera:

Y ahora picamos en el botn Zoom que vereis arriba a la izquierda:

- Y la hoja la veremos as: -

- (Para volver al rea de trabajo, picamos en el botn Cerrar );as que lo que haremos ser separar cada celda, cada fila y cada columna con una lnea, de manera que ya veremos como queda ms presentable.Para ello seleccionamos como siempre el rango al que le aplicaremos los cambios:

- Y acto seguido picaremos en la flechita negra del botn:

para que nos muestre:

- Eligiendo como veis el apartado Todos los bordes (podeis probar con otros tambin como ejercicio, y a continuacin volveis un paso atrs con Edicin-Deshacer. ), de tal manera que una vez picado, la hoja aprecer as tras picar en cualquier celda vaca: -

Si ahora volvemos a picar en Vista preliminar y luego en Zoom , ya el aspecto es un poco ms bonito como dijimos, podeis verlo: -

- Enfn, ahora podramos ajustar ciertas filas y columnas y cambiarle el aspecto a nuestro gusto, yo por ejemplo os muestro como me parece a m aceptable y dejo como ejercicio el que vosotros prepareis la vuestra de forma idntica para que en futuros ejercicios todos tengamos la hoja similar, la muestro:

Ahora manos a la obra y hay que dejarla idntica, y como pistas os dir que he utilizado los siguientes botones:

para seleccionar los colores de los nmeros.

para el borde oscuro del total de la tabla.

para colorear fondos, y

para dar el atributo de Negrita en algunos lugares. - Con lo apuntado, en poco tiempo deberas tener la hoja completada y con el aspecto que te he presentado arriba todo correcto?, pues seguimos. - Si eres observador, enseguida te habrs dado cuenta que cuando vamos a la vista preliminar , la columna del mes de Junio no aparece, y en cambio en la hoja donde trabajamos s que la vemos perocon una lnea vertical punteada:

- Y lo que nos est diciendo esto es que el tamao de la pgina nos llega justo hasta el mes de Junio, y que la columna de dicho mes, si fusemos a imprimir la hoja por ejemplo, estara en una pgina distinta (saldran 2 pginas por la impresora). Para solucionar esto(pues resultara desagradable que la hoja saliera partida) tenemos dos opciones: la primera sera decirle a Excel que nos cambie la pgina a Apaisado , lo que haramos picando en Archivo-Configurar pgina

- Picando ahora en el circulito de: y en botn Aceptar para que ya la hoja aparezca as, y el espacio sea suficiente (lo muestro en vista preliminar):

- Veis ya el mes de Junio includo.(Volved a cambiarla a vertical para seguir). - Y la segunda forma (suponiendo que no quereis que la pgina cambie a Apaisada sino que siga en Vertical) sera: seleccionar todas las columnas de los 6 meses: para ello colocais el puntera del ratn sobre la C de la primera de las columnas hasta que el puntero cambiase a:

En ese momento pulsais el botn izquierdo y sin soltarlo arrastrais a la derecha hasta que queden seleccionadas las columnas C hasta H y soltais:

- Acto seguido colocais el puntero del ratn justo en la lnea que separa C de D y vereis que el puntero se

convierte en doble flecha:

as que pulsas botn izquierdo y sin soltar estrechas la celda C ,hasta un tamao adecuado que permita a Junio entrar en la pgina, y cuando est correcto sueltas el botn, quedando as:

Como vs, ahora incluso sobra espacio hasta la vertical de puntos.Y es todo por hoy amigos, as que proceded a Guardar la hoja tal como est y seguiremos.-Saludos

SolutionBase: Hacer Excel y SQL Server hablar el uno al otro


Por Colaborador Invitado 31 de marzo 2004, 8:00 am PST Muchas empresas hoy en da se utiliza SQL Server para manejar los datos sobre productos, servicios y soporte de las llamadas-casi cualquier cosa que puedas imaginar. Por lo general, las empresas que tienen SQL Server tiene aplicaciones de software muy grandes y costosos dedicados a introducir y recuperar datos de las bases de datos. Si bien estas aplicaciones son tiles y necesarios para la obtencin de datos en el entorno de SQL Server en muchos casos, la informacin a veces puede ser problemtico. Para muchos usuarios, la generacin de informes de SQL Server no es la primera cosa que pensamos que es fcil de usar. Con un poco de trabajo, puede crear documentos que se presentan datos de SQL Server de forma que los usuarios finales no se dan cuenta los datos que estn jugando con la vida en una enorme base de datos. En su lugar, usted puede presentar esos datos en un formato ms familiar, como una hoja de clculo Excel. He aqu cmo se hace.

Nota del autor El objetivo de esta obra ser en dos programas de SQL Server y Excel. Este artculo le ayudar a mostrar a sus usuarios cmo utilizar los dos programas a la perfeccin para ver los datos. Los informes y la informacin que va a ser capaz de proporcionar los ayudar a hacer su trabajo ms eficientemente y reducir las llamadas al help desk o el DBA empresa. A los efectos de este artculo, voy a utilizar SQL Server 2000 Evaluation Edition y Office XP. Usted necesitar por lo menos la versin en tiempo de ejecucin de Microsoft SQL Server y Microsoft Excel u Office. Voy a estar utilizando la base de datos Neptuno, una base de datos de ejemplo que se incluye con las versiones Standard y Enterprise de SQL Server. Esta base de datos tambin est disponible con Microsoft Access.

Requisitos simples La mayora de los entornos de oficina utilizan productos de Microsoft Office, por lo que Excel fcil de conseguir. Sin embargo, SQL Server puede ser un poco caro, y si su empresa no ha bombardeado a cabo o no est dispuesto a pagar la tarifa de uso (derechos de licencia de Microsoft y otros gastos) para la versin sobrealimentada de SQL Server, no preocuparse.Microsoft ha creado una edicin de escritorio que es libre de descarga . Se almacenan los datos tan bien como las versiones ms grandes del producto, pero no viene con todas las herramientas tiles para el diseo de bases de datos.

Su primer paso en la creacin de informes en Excel es til para sondear su comunidad de usuarios para las cosas que usamos todos los das. Por ejemplo, usted puede tomar nota cuando los usuarios de un determinado departamento vienen a hacer preguntas y obtener ayuda, y si estn teniendo problemas con un informe o conseguir algunos datos, a continuacin, esta solucin puede proporcionar a usted con una solucin rpida y fcil a un problema potencialmente en curso. En el siguiente escenario, voy a crear un informe rpido para Phil, un empleado del departamento de marketing, que detalla que los clientes compran Ale Sasquatch y las cantidades que han comprado. Para elaborar el informe al cliente, hablar con los usuarios que podran tener uso adicional de la misma. Tal vez comienza como un informe para satisfacer una necesidad de Phil en el departamento de marketing, pero en el largo plazo, un informe creado por un usuario probablemente se ajuste a las necesidades de otros varios, con muy pocos cambios, si los hubiere. La obtencin de datos de forma nativa en SQL Server Una vez que haya recogido alguna informacin, empezar a probar las ideas para extraer estos datos. A travs de mi propia experiencia, he encontrado que las mejores maneras de escribir un informe destinado a Excel es crearlo en Microsoft Query Analyzer o utilizar la herramienta incluida en Office, Microsoft Query, y poner a prueba su validez en lugar de confiar en el Asistente para consultas. Obteniendo datos de SQL Server puede ser muy abrumadora si el informe se est generando se ve a varias tablas y montones y montones de necesidades de datos. Si accede a varias tablas, a continuacin, el Asistente para consultas puede ser una mejor opcin para crear el informe. Le permite incluir comentarios en las instrucciones SQL para que pueda permitir que otra persona a recoger a donde lo dejaste, o en algunos casos, seguir basndose en una consulta posterior. El informe para mostrar que los clientes compraron Ale Sasquatch y la cantidad de este producto fue comprado por cliente slo debe contener una consulta y referencia cuatro tablas: Clientes, Pedidos, Productos y Detalles de pedidos. Esta consulta de tres tablas puede parecer un poco complejo al principio, especialmente si usted todava no han creado su propia sentencia SQL, pero como usted ver, en realidad no es tan malo. Si nos fijamos en cada elemento individual y la pieza que con los otros elementos, que caer en su lugar rpidamente. Para recuperar la informacin del cliente, nombre de la empresa, y el nombre del contacto, tendrs que seleccionar de la tabla Customers. Esta tabla tambin contiene la identificacin del cliente, lo que facilitar el acceso a los pedidos de ese cliente. La tabla Orders, el cual contiene la identificacin de la orden por cada pedido realizado y el ID de cliente para el cliente que realiz el pedido, debe ser considerado como la puerta de acceso a la informacin que desee seleccionar. Si bien no es necesario para mostrar alguno de los datos de la tabla Pedidos, debe hacer una parada en boxes, no para obtener la identificacin de la orden.Una vez hecho esto a travs de una simple declaracin JOIN, puede seleccionar la cantidad solicitada para cada cliente, as como la fecha de la orden de la tabla Detalles de pedidos con otro sencillo JOIN. Una instruccin JOIN final que arroja en la tabla de Productos para el nombre del producto solicitado. El

cdigo para esta instruccin SELECT se muestra a continuacin con los comentarios: - Consultas para seleccionar los clientes que ordenaron Sasquatch Ale, la cantidad que compra y la fecha de la orden - Se coloc - Indicar a SQL Server de base de datos que debe utilizar para la consulta. Por defecto, la base de datos principal se selecciona. USE Northwind - Crear una consulta de seleccin de las columnas necesarias en sus respectivas tablas seleccione cust.companyname, cust.contactname, orddet.quantity, ord.orderdate, prod.productname de los clientes cust inner join pedidos Ord en cust.customerid = interno ord.customerid unirse [Detalles de pedidos] orddet de ord.orderid = orddet.orderid interiores se unen los productos de productos de orddet.productid = prod.productid donde prod.productname = 'Sasquatch Ale El ejemplo de cdigo anterior crea el resultado que se muestra en la Figura A.

La figura A

El conjunto de resultados de la consulta anterior, se muestra en formato de cuadrcula Analizador de consultas, la muestra de 19 clientes que ordenaron Sasquatch Ale.

Las tablas se unen en una columna comn. Por ejemplo, clientes y pedidos se unen, donde el cliente los ID de ambas tablas son iguales con el comando: las rdenes internas de combinacin de ord = cust.customerid ord.customerid Las tablas tambin tienen una sintaxis adicional despus de su nombre. Esto se conoce como un alias. Se permite hacer referencia a las tablas combinadas en formato abreviado para simplificar el cdigo. He utilizado el alias de cust para los clientes y los alias ord de los pedidos. Esto me permite utilizar la

sintaxis de cust.contactname y ord.orderdate cuando se hace referencia a la columna ContactName de la tabla Clientes y la columna OrderDate en la tabla Pedidos. Si lo hace, hace que el tamao de la consulta un poco ms pequeo. Al crear consultas de gran tamao, un menor nmero de pulsaciones de teclas puede ser muy til. Esta consulta no es la simple consulta a escribir usando solamente SQL transaccional. Se trata de unir cuatro tablas para recuperar la informacin deseada. Adems, en la declaracin anterior despus de la clusula Where, podra haber aadido ordenar por ord.orderdate para poner los resultados en orden por la fecha en que se realiz el pedido, pero eso no es necesario hacer el trabajo comunicado. Cmo hacerlo en Excel Ahora voy a mirar en la misma consulta a travs de los ojos de Excel. En Excel, vaya a datos | Importar datos externos | Nueva consulta Seleccionar base de datos. Cuando se selecciona la Nueva consulta de base de datos la opcin de men, se le presentar con la pantalla que se muestra en la Figura B, que le pedir que seleccione un DSN.

Figura B

La fuente de datos el nombre de ventana de seleccin con el nuevo origen de datos puso de relieve: Este es el valor predeterminado.

Qu pasa si no hay un DSN de SQL Server creado? Simplemente haga clic en el botn OK en el lado derecho de la ventana, con la seleccin por defecto resaltado.

DSN, DNS, ODBC: Qu son todas estas siglas? Cuando se conecta a SQL Server utilizando Excel, que est creando un Open Database Connectivity

(ODBC) a la base de datos. Estas conexiones se conocen como nombres de origen de datos (DSN), que a veces se mal escritas como DNS, el sistema de nombres de dominio utilizados en Internet. Muchas veces me he hecho de este error tipogrfico, que pasa el corrector ortogrfico de Word y puede ser pasado por alto.

Haga clic en el botn OK en la parte derecha de la ventana. A continuacin, ver el Asistente para crear nuevo origen de datos de comenzar, como se muestra en la Figura C.

Figura C

La primera pantalla del asistente Crear nuevo origen de datos

Puede especificar un nombre personalizado para el DSN y, a continuacin seleccionar el tipo de fuente de datos que se est conectando. En este caso, haga clic en el cuadro desplegable, desplcese hasta el ltimo tipo de fuente de datos (SQL Server) y haga clic en el botn Conectar. En el cuadro de sesin de SQL Server, tendr que especificar el nombre del servidor de su equipo SQL Server 2000, junto con las credenciales de acceso que permiten el DSN para conectarse a SQL Server con xito. Si el servidor de base de datos utiliza la autenticacin de Windows, seleccione la casilla de confianza caja de conexin y haga clic en Aceptar. Este mtodo de conexin se muestra en la figura D.

Figura D

Introduzca las credenciales necesarias para la base de datos.

Si su SQL Server utiliza los inicios de sesin de SQL, o cuentas de usuario creadas en SQL Server, se debe considerar la creacin de una cuenta de slo lectura de sesin de SQL para su uso por todas las aplicaciones de informes. Si usted tiene una cuenta ya creada, introduzca el nombre de usuario y contrasea para esa cuenta en esta pgina y haga clic en Aceptar. Si desea asegurarse de que el origen de datos siempre se conecta a la base de datos a la derecha en el cuadro de inicio de sesin se muestra en la figura D, puede hacer clic en el botn Opciones y seleccione la base de datos predeterminada. En este caso, la base de datos sera Neptuno. A continuacin, haga clic en Aceptar y contine con el resto del asistente. Aunque este paso no es necesario, se podra hacer el proceso un poco ms suave. La pantalla para especificar una base de datos se muestra en la Figura E.

Figura E

Elegir una base de datos predeterminada para este DSN

El asistente realizar una conexin a la base de datos usando las credenciales que ha especificado y le preguntar si desea especificar una tabla para este DSN, como se muestra en la Figura C. Deje esta casilla en blanco. Debido a que su consulta va a utilizar ms de una mesa, no hay necesidad de una tabla predeterminada. Guardar el nombre de usuario y contrasea como parte de la DSN no es una mala idea si se ha creado un inicio de sesin de SQL Server para el uso de slo lectura, de esta manera, no tendra a las llamadas de campo sobre el nombre de usuario y una contrasea para el informe. Una vez que tengas todo lo llena en la forma deseada, haga clic en Aceptar. Esto le devolver a la pgina Elija un cuadro de origen de datos, pero esta vez su DSN recin creado aparecer en la lista. Haga clic en el DSN para seleccionarlo y haga clic en Aceptar. En la siguiente pantalla que aparece, ver el Asistente para consultas se muestra en la Figura F.Aqu, usted puede elegir las columnas de las tablas de la base de datos por defecto (si se ha seleccionado una previamente) mediante la ampliacin de signo ms de una tabla y poner de relieve la columna que desea elegir. Haga clic en la flecha nica en el centro de la pantalla para agregar la columna a la lista.

Figura F

Seleccin de columnas para su uso por el asistente

Despus de seleccionar todas las columnas que desea utilizar, haga clic en Siguiente. A continuacin se le pedir para filtrar el conjunto de resultados. Cuando se aplican filtros para el conjunto de resultados, que son esencialmente la construccin de la clusula WHERE de la consulta. Si desea ver slo los resultados en identificacin de la orden es igual a 3, que completara esta pgina como se muestra en la Figura G.

Figura G

Elija el orden en que desea que los resultados ordenados.

Cuando se han filtrado los datos que desee, haga clic en Siguiente y decirle al Asistente para consultas de la orden en el que desea ordenar los resultados. Esta pantalla muestra las columnas que ha seleccionado en cada cuadro desplegable. Si se selecciona una columna, los resultados sern ordenados por cada columna que haya seleccionado. En la ltima pantalla del asistente, usted puede seguir para editar su consulta en Microsoft Query, lo que le permite personalizar an ms los resultados que usted recibe, o puede crear una consulta OLAP o devolver los resultados a Excel. Para esta parte del asistente, voy a aadir la consulta se muestra arriba a la asistente y mostrar los resultados en Microsoft Query y luego en Excel (Figuras H e I).

Figura H

Los resultados aparecen en Microsoft Query

La figura I

Los resultados muestran en Microsoft Excel

Cuando en realidad lo devuelven resultados a Excel, ya sea desde el asistente o desde Microsoft Query, se le pedir que elija una celda para poner los datos in Si va a incluir el ttulo del informe, es posible que desee dejar un poco espacio extra y comienzan los datos alrededor de la fila 6. Si usted decide ver la

consulta y adems editarlo en Microsoft Query, el icono en la barra de herramientas que muestra una puerta con una flecha que entra es el botn para regresar los datos a Excel. Una alternativa a veces ms fcil Cuando usted est utilizando una consulta compleja, como lo he hecho en este ejemplo, podra ser ms fcil para componer la consulta en el Analizador de consultas (ver imagen superior) o en Microsoft Query en lugar de utilizar el asistente. Para ello, seleccione una columna cuando se le pregunt a hacerlo por el asistente. A continuacin, haga clic en Siguiente tres veces y seleccione Ver datos o modificar consulta en Microsoft Query. Haga clic en Finalizar, y ver el registro que eligi en Microsoft Query. Seleccione la tabla que se muestra grficamente en la parte superior de la ventana de Microsoft Query. A continuacin, haga clic en Tabla | Eliminar tabla. Haga clic en el botn de la barra de herramientas de SQL y escriba manualmente la consulta o pegar una consulta pretyped en este cuadro, y haga clic en Aceptar.

4
Comentarios

Pon tu opinin

nete a la conversacin!
Siga a travs de: RSS Enva esta pgina Sigue
Ver todos los comentarios

Selecciones del personal Mejor Valoradas Ms recientes Mis contactos 0votos +-

Excel para bases de datos


brigzy 13 de junio

Excel to Database now supports MySQL as well as SQL Server and Access. Excel para bases de datos ahora es compatible con MySQL, as como SQL Server y Access. The tool allows you to pre-validate data... Read Whole Comment +

Ver en el hilo

0votos +-

copiar los datos de hoja de Excel a SQL Server utilizando script T-SQL
ravi_maduri_mca @ ... 14 de noviembre 2007

I want to copy the Excel sheet data to Sqlserver table how can ido that please help me out not with VB.net and C#.net devalopment,only with T-Sql Query. Quiero copiar los datos de la hoja de Excel a... Read Whole Comment +

SQL Server y Microsoft Excel Integracin


ltima actualizacin 29 de enero 2010. Si ests en busca de ms arriba-informacin actualizada sobre este tema, por favor visite nuestro SQL Server artculo , podcasts , y la tienda de pginas. Como profesionales de la informacin, la mayora de nosotros se concentran en el establecimiento de un seguro, confiable, con buen desempeo servidor back-end para diferentes aplicaciones. Rara vez te preocupes por las aplicaciones de front-end, a menos que causar problemas con un clster o servidor. Es una cuestin diferente, sin embargo, cuando se trata de la integracin. No importa cul sea su nivel de participacin con las aplicaciones de front-end, es su deber de asistir con los esfuerzos para acceder directamente a datos en una base de datos SQL Server. Nadie est ms familiarizado con los efectos que se producirn cuando los datos se importan, exportan, o vinculado a una de sus bases de datos. Entra en la oficina de Microsoft. Es la herramienta de la industria estndar de oficina, conocida por la mayora de los usuarios de negocio, y funciona en todo, desde Windows 95 y Windows XP hasta el final a Crossover Office en Linux. En resumen, la Oficina est en todas partes. Y, en particular, Microsoft Excel es invocado por la mayora de cada empresa que lo ha instalado. De hecho, algunos lo han llamado "el mundo el sistema de base de datos de uso ms frecuente." Y eso no puede estar lejos de la verdad. Debido a su fcil disponibilidad, Excel es una eleccin natural para la manipulacin de datos. Tiene una increble variedad de herramientas para las aplicaciones, de las estadsticas a la ingeniera, y funciones de negocios, adems. Excel se ensea en la mayora de las escuelas de negocios y universidades, como parte de un plan de estudios estndar. Otra de las razones para integrar los datos de SQL Server con Microsoft Excel es que los libros, que se componen de una o ms hojas de clculo, son porttiles. Hay espectadores y convertidores para casi todos los principales sistemas operativos, y otros programas de oficina a menudo puede leer su formato nativo. Microsoft Excel tambin tiene gran presentacin y herramientas grficas. S de varias tiendas que utilizan Excel exclusivamente para los informes. Microsoft incluso ha anunciado que las nuevas versiones de Excel es la herramienta de eleccin para trabajar con, la visualizacin y presentacin de informes sobre los conjuntos de datos, incluso de gran tamao.

Aadir a esto la capacidad de la derecha del programa dentro de Microsoft Excel utilizando Visual Basic para Aplicaciones (VBA), y usted tiene un argumento muy poderoso para el uso de esta herramienta para acceder y procesar datos de SQL Server. Ahora que ests convencido de que Excel es un ajuste natural para la integracin de datos, cmo se consigue que los datos dentro y fuera de sus bases de datos? Hay varios mtodos, cada uno con su propia aplicacin para tener en cuenta. Antes de comenzar, sin embargo, hay un par de cosas a tener en cuenta. En primer lugar, porque Excel es un medio basado en archivo plano, puede que tenga que cambiar su forma de pensar sobre los datos almacenados en las bases de datos relacionales. Usted podra tener que crear un poco ms de los objetos de base de datos, como las vistas y procedimientos almacenados, para dar formato a los datos de una forma ms de-normalizada, pre-uni camino para que el usuario de hoja de clculo. Los mismos conceptos son vlidas para las importaciones y exportaciones. Al crear el diseo de las operaciones, esta diferencia entre el archivo plano y la estructura relacional se darn cuenta en gran medida en el diseo. Puede que tenga que crear un proceso para romper el diseo plano en una estructura relacional en la importacin o exportacin. El otro tema para hacer frente a la integracin del servidor de SQL en Excel es la conversin de datos. El ejemplo ms clsico es la forma en que SQL Server interpreta los valores hexadecimales que viene de Microsoft Excel. Las fechas tambin puede ser problemtico, lo mejor es comprobar los resultados despus de importar o exportar datos entre los dos programas. El problema surge porque SQL Server se encarga de un montn de tipos de datos, dependiendo de la versin y la edicin de SQL Server que est utilizando. stos son slo algunos de ellos: char, nchar, varchar, nvarchar bigint, smallint int y tinyint Datetime y smalldatetime dinero y smallmoney decimal y numeric float y real

texto y ntext binary, varbinary y la imagen poco, uniqueidentifier y marca de tiempo

Sin embargo, los grupos de datos de Excel en slo unos pocos tipos bsicos, una vez ms, dependiendo de la versin que usted tiene. Algunos de estos incluyen texto, valores, fechas y frmulas. Mientras tanto en Excel y SQL Server hacen un trabajo bastante bueno para adivinar el tipo de datos que est entrando, no se puede confiar en la transferencia entre ellos a ciegas.

SQL Server y Excel Mtodos de Integracin


A pesar de algunas limitaciones, Excel sigue siendo una herramienta de integracin maravilloso.Existen varios mtodos de integracin; divide principalmente en categoras que llamar "Copiar datos" y "Linked Data". Hay un montn de maneras de realizar este proceso, me centrar en los ms populares aqu. La principal diferencia entre estas categoras es la forma en que tratan los datos despus de la interaccin. En una "Copia de datos", los datos se copian en esencia de un lugar a otro, y luego comienza a separarse de su fuente inmediatamente despus de la transferencia. En el "Data Conectados" mtodo, los datos se almacenan en una sola fuente, as que los cambios se reflejan inmediatamente en ambas interfaces. Por lo tanto, su primera decisin a tomar es la categora de usar, y luego elegir el mtodo de esa categora que mejor se adapte a las necesidades. Despus de eso, poner a prueba el proceso, con datos de la muestra, y luego trabajar en la medicin del rendimiento y escribir controladores de errores.

Copia de datos
Puede utilizar esta categora de mtodos cuando slo tiene que tener una transferencia de los datos almacenados en SQL Server o Excel. En otras palabras, el criterio de los siguientes mtodos es que haya terminado con los datos en un programa, y lo necesita en otro. Por ejemplo, los usuarios pueden necesitar los datos que se almacenan en una base de datos de SQL Server para presentar en un informe de gestin. En otro ejemplo, los datos almacenados en hojas de clculo distintas que se necesita en SQL Server para completar un conjunto de datos.Tambin he visto situaciones ms complejas, donde se originan los datos en SQL Server, se transfiere a las hojas de clculo para el procesamiento, y se vuelve a importar de nuevo en el flujo de datos SQL para su uso por otra aplicacin.

En todos estos casos, hay una transferencia discreta de la propiedad de los datos. La limitacin es que estos mtodos no permiten modificaciones en los datos de base mismos, al menos al mismo tiempo. Ahora que usted entiende que el uso de datos de copia, voy a profundizar en los detalles sobre cmo hacer que eso suceda.

Simple copiar y pegar


El primero de estos mtodos es buena de edad, copiar y pegar. Puede utilizar este mtodo para copiar un pequeo conjunto de registros rpidamente. Entender que este mtodo es muy prctico, es sin duda un "alto contacto" proceso! Aun as, es a menudo suficiente para ad-hoc o soluciones de una sola vez. Copia de datos de SQL Server a Excel mediante un proceso manual es muy simple: 1. Abrir el Analizador de consultas (QA) o SQL Server Management Studio (SSMS) ventana de consulta. Ajuste la salida a la "red" con el icono en la barra de iconos en la parte superior de la herramienta. Este es el valor predeterminado la mayor parte del tiempo de todos modos. 2. Ejecutar cualquier consulta usted est interesado pulg 3. Si est utilizando el Analizador de consultas, haga clic en la pequea caja en la parte superior izquierda del panel de resultados para seleccionar los resultados de la consulta y pulse CTRL-C. Usted puede hacer lo mismo en SQL Server Management Studio, y de hecho no se puede seleccionar slo unas pocas clulas o filas, o incluso mantenga presionada la tecla CTRL y haga clic para seleccionar las clulas que no son contiguas. 4. Abrir Excel y pegar los datos en el que lo desee. La razn por la que esto funciona es que al copiar los datos de la vista de cuadrcula en SQL Server, que se almacena en el portapapeles como una cadena de valores separados por tabuladores. Al pegar en Excel (o casi cualquier red de Microsoft Office), coloca a los valores de all como valores separados por tabulaciones. La direccin inversa (Excel a SQL Server) no es tan simple. Usted puede utilizar el Administrador corporativo de "vista de datos" o SQL Server Management Studio "Editar datos" opcin por una mesa de botn derecho del ratn, pero puede que no funcione. Tendr que asegurarse de que las restricciones de tabla permitir que los datos que est tratando de pegar, y que usted est muy

seguro de esos tipos de datos. En la mayora de todas las circunstancias, yo no la recomiendo el mtodo de copiar y pegar para importar datos a SQL Server.

Uso del Asistente de importacin / exportacin


Mientras que el mtodo de copiar y pegar es muy bueno para las transferencias de una sola vez simples, que no es muy sostenible. Si lo que busca un carcter ms permanente, el mtodo de control de transferencia de datos, considere el uso de los servicios de SQL Server de transformacin de datos (DTS) en la versin 2000 e inferior, y SQL Server Integration Services (SSIS) en SQL Server 2005 o superior. Estas caractersticas tienen varias funciones de gran alcance, a partir de la transferencia de datos a los mapas de datos en desarrollo, el manejo de errores y notificaciones, y se transforma. Adems, el proceso se puede guardar y utilizar una y otra, incluso provocada por otro evento de SQL Server. Tengo los artculos sobre el uso de DTS y SSIS aqu en InformIT y hay varios escritos por otras personas tambin. Por supuesto que puede empezar a explorar estas herramientas de gran alcance de sus respectivas interfaces, pero no hay realmente una manera ms sencilla de llevar Excel (o muchos otros tipos de insumos para el caso) los datos de entrada y salida de SQL Server. 1. Abra el Administrador de la Empresa (2000 y menores) o SQL Server Management Studio (2005 o superior) 2. Haga clic en cualquier nombre de base de datos y seleccione "Todas las tareas" en el men que aparece. 3. Seleccione "Importar y exportar datos" de ese submen. 4. Vers un cuadro de dilogo de seleccin de fuente, en el que puede seleccionar SQL Server o Microsoft Excel, dependiendo de la forma en que desea transferir los datos 5. Siga el resto del asistente, que le llevar a travs del proceso de mapeo de campo, se transforma, y guardar las selecciones (denominado paquete) para su uso posterior 6. Ejecute el paquete en el ltimo cuadro de dilogo. (Una referencia al final de este artculo entra en ms profundidad en este proceso.)

Uso de Excel para la copia de datos


Para mover los datos utilizando Excel, usted tiene algunas opciones. Bajo el Excel "Datos" del men, usted encontrar "datos externos", as como un "Asistente para consultas", submen, ya que ambos utilizan los controladores ODBC para acceder a datos en SQL Server. En versiones

posteriores de Excel, usted tiene muchas ms opciones - Hay incluso un "Obtener datos de SQL Server" opcin correcta en la opcin de datos de la cinta de opciones.

Figura 1 Cada opcin tiene un "refresh" la capacidad, por lo que puede copiar los cambios de datos en el lado de SQL Server, pero tenga en cuenta este proceso es de un solo sentido. Los datos han cambiado en Excel no automticamente fluir de nuevo a SQL Server. Este mtodo se utiliza mejor para las pequeas, las consultas ad hoc en la base de datos, y normalmente debe ser utilizado a travs de puntos de vista sobre las tablas de bases de datos, no a travs del acceso directo a las tablas base. Mientras estamos en ese tema, es importante recordar que cualquier acceso a una base de datos de SQL Server se ha de bloqueo y el bloqueo de las consecuencias. Permitir que no planificada, el acceso ad hoc en un sistema de produccin OLTP es casi siempre una mala idea. Es un proceso mejor para crear especiales de slo lectura que pueden acceder a las cuentas de algunos puntos de vista sobre un sistema de informacin solamente. El uso de un sistema de informacin permite el diseo de ndice y un control de acceso para las consultas no planeadas. Una vez que haya examinado las implicaciones de rendimiento, aqu est el resumen de uno de esos procesos de importacin de Excel - esto se debe trabajar con las versiones anteriores: 1. Abrir Excel 2. Seleccione "Datos" de la barra de men, a continuacin, "datos externos" 3. Seleccione "Importar datos ..." 4. Seleccione la opcin "Fuente Nueva ..." botn 5. Seleccione "Microsoft SQL Server" como fuente, a continuacin, "Siguiente" 6. Introduzca el nombre del servidor, a continuacin, seleccione el mtodo de autenticacin llenar ese arreglo a lo establecido

7. Seleccione la base de datos que desea, luego de la tabla o vista y, a continuacin, seleccione "Siguiente" 8. Nombre de la conexin y luego seleccione "Finalizar" 9. Ests ahora habis vuelto al "origen de datos" zona de 10. Haga clic en "Abrir", y luego seleccionar el rea de la hoja de clculo en los datos debe comenzar 11. Haga clic en "Aceptar" Como ya he mencionado hace un momento, un par de otros mtodos de Excel pueden traer los datos desde SQL Server. Mientras que en el paso 2, tambin puede seleccionar la opcin "Consulta de Microsoft", que usa un asistente similar a los pasos anteriores. Microsoft Query tiene una interfaz ms potente, donde se pueden hacer selecciones de todo el camino hasta el nivel de columna. Tambin puede editar la consulta en una interfaz similar a la que usted encontrar en el rea de acceso a las tablas en el Enterprise Manager o Microsoft Access. La consulta se pueden guardar para su uso posterior.

Uso de VBA para llegar a los datos de SQL Server


Si lo que busca es un proceso menos manual, el ltimo mtodo es un poco ms complejo, pero incluso ms potente. Microsoft Excel, al igual que todas las nuevas versiones de productos Microsoft Office, tiene una interfaz de programacin completa en la forma de Visual Basic para Aplicaciones (VBA). Si tienes algo de experiencia en programacin en absoluto, puede escribir cdigo contra una base de datos. Una vez ms, todas las advertencias anteriores sobre bloqueo de aplicar. Advertencias adicionales estn garantizados aqu, ya que con la programacin puede afectar a los datos en la base de datos, as como la lectura de la misma. Hay algunos lugares que usted puede utilizar VBA en Excel, como las funciones y macros personalizados, pero vamos a seguir con las macros de este ejemplo. El proceso bsico es que se crea una macro, editar, y luego ejecutarlo. Puede editar la macro dentro de un editor, en el que se escribe el cdigo para conectarse, el acceso, y cerrar la conexin a una base de datos. Este es el proceso para crear su propia macro para conectarse a SQL Server mediante programacin:

1. Abrir Excel 2. Haga clic en "Herramientas", luego "Macro" y luego "Macros ..." 3. Nombre de la macro y, a continuacin, haga clic en Crear 4. En la ventana del editor, escriba la informacin siguiente, sustituyendo los nombres propios para el servidor y las tablas que desea en medio de la cadena "xxxx Sub" y "End Sub" tags:
'Declarar el objeto Dim qt QueryTable QueryTable Como' Juego de la SqlString de sentencias SQL = "select au_fname, au_lname de autores" 'Configurar la cadena de conexin, haga referencia a una conexin ODBC "Hay varias maneras de hacer esto" Deje el nombre y la contrasea en blanco para autenticacin de Windows NT connString = _ "ODBC; DSN = pubs; UID =; PWD =; Database = pubs" 'Ahora implementar la conexin, ejecute la consulta, y aade "los resultados de la hoja de clculo a partir de la fila A1 Con ActiveSheet.QueryTables . Aadir (Conexin: = connString, Destino: = Range ("A1"), SQL: = SqlString) WithSave Actualizar final y cierre la macro, y ejecutarlo desde el mismo men que accedi en el paso 2..

NOTA Es probable que existan por lo menos diez formas programticas de hacer esto exactamente lo mismo - y todos ellos son correctos! Si usted est realmente interesado en la programacin con VBA, usted encontrar varios buenos libros aqu en InformIT y tambin en Safari.

Linked Data
Ahora voy a alejarse de la "Copia de datos" a la categora de "Datos Conectados" categora de mtodos. Voy a describir los dos mtodos principales para vincular los datos, tanto de los cuales enlazan datos de Excel en una consulta de SQL Server. Hay maneras de utilizar Excel para administrar los datos directamente en SQL Server, pero implican la programacin un poco ms, y he encontrado que son un poco torpe - especialmente para el uso diario. Excel sencillamente no se ocupa de las cerraduras y los problemas de conectividad, as como lo necesario para las soluciones de produccin a gran escala. Tambin puede codificar una solucin que tenga acceso a los datos almacenados en una hoja de clculo Excel y actualizar una tabla de SQL Server como un resultado, pero esto es realmente orientado a eventos y no una solucin vinculada. (Una vez ms, hay una gran cantidad de ayuda para la programacin en ese sentido aqu en la InformIT.) As que volviendo a los mtodos que he encontrado fcil de implementar, hay dos opciones que puede utilizar para consultar los datos en una hoja de clculo Excel en SQL Server.

Acceso temporal a datos de Excel desde SQL Server


El primer mtodo es bastante simple, y utiliza la funcin OPENROWSET. sta es la sintaxis para una consulta rpida de una hoja de clculo Excel con una pestaa por defecto en ella, se llama c: \ temp \ test.xls:
SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; base de datos = c: \ temp \ test.xls; HDR = Yes', "SELECT * FROM [Hoja1 $] ')

Acceso permanente a datos de Excel desde SQL Server


Si usted piensa que es posible que desee consultar la hoja de clculo en varias lneas de cdigo, es posible que desee crear una conexin reutilizable a l - en otras palabras, lo tratan como un servidor. Puede indicar a SQL Server que desea para el tratamiento de otro origen de datos (como Excel, archivos de texto o bases de datos Oracle) como un servidor usando un "servidor vinculado." Es bastante simple para crear uno. As es como para hacer eso por una hoja de clculo llamada "test.xls" en el directorio c: \ temp: 1. El Analizador de consultas abierto o un servidor SQL Server Management Studio ventana de consulta 2. Ejecute el siguiente cdigo:
- Aqu hemos creado el servidor vinculado mediante el proveedor de JET EXEC sp_addlinkedserver N'ExcelLink ', @ Srvproduct = N'', @ = Proveedor de N'Microsoft. Jet.OLEDB.4.0 ', @ = Datasrc N'C: \ temp \ test.xls ', @ Provstr N'Excel = 8,0; ' GO

De esta manera, se crea un servidor vinculado, y dar a ese respecto un nombre. Tenga en cuenta tambin el nombre de la hoja de clculo, que tambin puede estar en un recurso compartido de red. Slo tienes que hacer esto de una vez por cada hoja de clculo, si no vamos a acceder a la hoja de clculo de nuevo, es una buena idea dejar caer el servidor vinculado despus de haberlo utilizado. Ahora que tiene un servidor vinculado, puede acceder a los datos. El proceso para este mtodo es como sigue:

En una herramienta de consulta como el Analizador de consultas o en la ventana de consultas de SSMS, escriba lo siguiente:
- Configuracin de la conexin de un usuario de la hoja de clculo EXEC sp_addlinkedsrvlogin 'ExcelLink', 'false' GO - Obtener los datos de hoja de clculo - "Sheet1" es el nombre de la ficha SELECT * FROM OPENQUERY (ExcelLink, 'select * from [Hoja1 $]') GO

En esta seccin, hemos utilizado la funcin OPENQUERY, que pasa a la consulta con el proveedor. Usted encontrar el lenguaje de consulta es bastante limitado, a veces, con Excel. Si las consultas no son lo bastante selectivo, creado otra hoja de clculo en el libro con los datos que desea, y la consulta que uno. Como puede ver, usted tiene varias opciones abiertas para integrar los datos entre Microsoft Excel y SQL Server. Tengo bastantes recursos por debajo de que podran ser tiles.

Artculos y captulos de la muestra InformIT


William E. Pearson, III tiene un buen artculo sobre la integracin de Microsoft SQL Server 2000 y Microsoft Office OLAP, integracin de Microsoft SQL Server 2000 y OLAP de Microsoft Office, Parte 1: Creacin de un informe de tabla dinmica de Excel con un cubo OLAP . Usted puede explorar las capacidades de anlisis del informe de tabla dinmica de Excel para presentar los datos de un OLAP (Online Analytical Processing) cubo. En este tutorial, aprender a crear un informe de tabla dinmica a partir de cero, y explorar los detalles de su cubo centrado en la funcionalidad.

Libros y libros electrnicos


Necesitas algo ms actual? Echa un vistazo a el libro de Roger Jenning, Edicin Especial de Uso de Microsoft Office Access 2007 , lo que incluye el Excel 2007 y SQL Server.

Recursos en la Red
Estos enlaces son de Microsoft. Hay otros varios por ah, pero stos se ocupan de algunos de los temas que me hizo subir en el artculo. Aqu est un artculo que detalla los males de tipo de datos con las importaciones DTS y Excel . Este artculo de Microsoft se detalla el proceso de utilizacin de DTS con Excel .

Microsoft tiene una discusin ms amplia de ODBC para Excel cuestiones de tipo de datos aqu . Este artculo de Microsoft detalles de la programacin con ADO en contra de archivos de Excel que muestra cmo abrir una como una base de datos.

Convertir Excel a SQL Server


Aplicaciones prcticas de ordenador (PCA) proporciona a los programadores expertos para convertir sus aplicaciones de negocio desde Excel a SQL Server para crear aplicaciones repetibles y confiables que conservar el propsito de negocio y operacional de la hoja de clculo personalizado. Excel ofrece muchas herramientas poderosas para disear, gestionar y analizar datos empresariales. Sin embargo, MS hojas de clculo Excel que son tiles para el poder de un usuario que lo construy, se salen de control cuando se utiliza por ms y ms gente. La hoja de clculo crece en las caractersticas y la complejidad, y se copiado, modificado y enviado por correo electrnico alrededor. Es difcil saber cul es la versin correcta de una hoja de clculo, si los cambios se han hecho inadecuados, o cuando la seguridad de los datos se ha visto comprometida. Cuando llegue el momento en que su multi-usuario de la aplicacin MS Excel est fuera de control, es el momento de migrar la aplicacin de base de datos de Excel en una aplicacin de base de datos relacional basado en SQL Server. Esto eliminar todos los problemas multi-usuario, proporciona funciones de negocios confiables y repetibles, y mejorar la calidad y la consistencia de los datos subyacentes. Bases de datos SQL para bases de datos permiten permiten para ser utilizados a travs de Internet.Estas bases de datos distribuidas tienen un papel a nivel de seguridad que limita lo que los usuarios pueden hacer con los datos, a menos que los permisos adecuados se les concede. Convertir hojas de clculo Excel base de datos a una base de datos MS SQL Server proporciona una mucho ms estructurada, repetible enfoque ms a los procesos crticos de negocio. Base de datos SQL Server es compatible con los datos bien estructurados, los datos distribuidos, la seguridad de Internet y datos repetibles y de alta calidad y procesos de flujo de trabajo, con un nmero ilimitado de usuarios finales simultneos. PCA tiene una gran experiencia de conversin y migracin de hojas de clculo Excel a MS SQL Server.Haremos que su aplicacin Excel ms estructurado, mientras que la preservacin de la integridad funcional de la original, original de hoja de clculo MS Excel. MS Excel SQL Server

Flujo de trabajo

Ninguno (correo electrnico)

Proceso de flujo definido

Actualizaciones concurrentes

No (usuario nico)

S (varios usuarios concurrentes)

Seguridad

Una contrasea para todos

Privilegios basados en funciones

Problemas de versiones

Alto (archivo de datos sello)

Ninguno

Auditora-capacidad de

Bajo (fecha y comparaciones de correo electrnico)

Alta (pista de auditora completa)

Integridad de los datos

Baja (algo limitado)

Muy limitada

Los datos de capacidad

Limitado

Ilimitado

Estructuras de datos

Piso: 2-dimensiones

Relacional: 3 dimensiones

Acceso a Internet con seguridad

No

Una vez que una aplicacin de Excel se ha convertido en una base de datos SQL Server, los datos todava se pueden ver, exportar, y se analizaron en MS Excel. Todos estos datos, ecuaciones, y la manipulacin de datos se convierte en parte de una aplicacin estructurada, base de datos bien definido.La nueva aplicacin permite mejorar la coherencia de entrada de datos un mejor control de versiones, y un fcil interfaz de usuario ms sencilla. Lo mejor de todo, los datos pueden ser controladas y puestas a disposicin a travs de seguridad basada en roles de seguridad a travs de Internet.

Convertir Excel a SQL Server


Aplicaciones prcticas de ordenador (PCA) proporciona a los programadores expertos para convertir sus aplicaciones de negocio desde Excel a SQL Server para crear aplicaciones repetibles y confiables que conservar el propsito de negocio y operacional de la hoja de clculo personalizado. Excel ofrece muchas herramientas poderosas para disear, gestionar y analizar datos empresariales. Sin embargo, MS hojas de clculo Excel que son tiles para el poder de un usuario que lo construy, se salen de control cuando se utiliza por ms y ms gente. La hoja de clculo crece en las caractersticas y la complejidad, y se copiado, modificado y enviado por correo electrnico alrededor. Es difcil saber cul es la versin correcta de una hoja de clculo, si los cambios se han hecho inadecuados, o cuando la seguridad de los datos se ha visto comprometida. Cuando llegue el momento en que su multi-usuario de la aplicacin MS Excel est fuera de control, es el momento de migrar la aplicacin de base de datos de Excel en una aplicacin de base de datos relacional basado en SQL Server. Esto eliminar todos los problemas multi-usuario, proporciona funciones de negocios confiables y repetibles, y mejorar la calidad y la consistencia de los datos subyacentes. Bases de datos SQL para bases de datos permiten permiten para ser utilizados a travs de Internet.Estas bases de datos distribuidas tienen un papel a nivel de seguridad que limita lo que los usuarios pueden hacer con los datos, a menos que los permisos adecuados se les concede. Convertir hojas de clculo Excel base de datos a una base de datos MS SQL Server proporciona una mucho ms estructurada, repetible enfoque ms a los procesos crticos de negocio. Base de datos SQL Server es compatible con los datos bien estructurados, los datos distribuidos, la seguridad de Internet y datos repetibles y de alta calidad y procesos de flujo de trabajo, con un nmero ilimitado de usuarios finales simultneos. PCA tiene una gran experiencia de conversin y migracin de hojas de clculo Excel a MS SQL Server.Haremos que su aplicacin Excel ms estructurado, mientras que la preservacin de la integridad funcional de la original, original de hoja de clculo MS Excel. MS Excel SQL Server

Flujo de trabajo

Ninguno (correo electrnico)

Proceso de flujo definido

Actualizaciones concurrentes

No (usuario nico)

S (varios usuarios concurrentes)

Seguridad

Una contrasea para todos

Privilegios basados en funciones

Problemas de versiones

Alto (archivo de datos sello)

Ninguno

Auditora-capacidad de

Bajo (fecha y comparaciones de correo electrnico)

Alta (pista de auditora completa)

Integridad de los datos

Baja (algo limitado)

Muy limitada

Los datos de capacidad

Limitado

Ilimitado

Estructuras de datos

Piso: 2-dimensiones

Relacional: 3 dimensiones

Acceso a Internet con seguridad

No

Una vez que una aplicacin de Excel se ha convertido en una base de datos SQL Server, los datos todava se pueden ver, exportar, y se analizaron en MS Excel. Todos estos datos, ecuaciones, y la manipulacin de datos se convierte en parte de una aplicacin estructurada, base de datos bien definido.La nueva aplicacin permite mejorar la coherencia de entrada de datos un mejor control de versiones, y un fcil interfaz de usuario ms sencilla. Lo mejor de todo, los datos pueden ser controladas y puestas a disposicin a travs de seguridad basada en roles de seguridad a travs de Internet.

La necesidad de producir informes de Excel desde SQL Server es muy comn. En este caso, Robyn Page y Phil Factor presentes las tcnicas prcticas para crear y manipular hojas de clculo Excel a partir de SQL Server, mediante servidores vinculados y T-SQL. La pice de rsistance es un procedimiento almacenado que utiliza automatizacin OLE para permitir un control total sobre el formato del informe de Excel, y la posibilidad de incluir las sumas, cocinas, tablas dinmicas, etc. * / / *

El CRUD de Excel =====================

Phil y yo se han unido en esta mesa de trabajo, que se muestra cmo crear, leer, actualizar y borrar informacin en Excel usando T-SQL, a partir de SQL Server. Como siempre, la mesa de trabajo est estructurado de manera que se puede pegar en Analizador de consultas y SSMS, y los ejemplos individuales ejecutado - usted puede descargar el sql de la "descarga de cdigo de" enlace de arriba, cargarlo y empezar a experimentar.!

Contenido ========
Crear hojas de clculo Excel a travs de ADODB Manipulacin de datos de Excel a travs de un servidor vinculado Sincronizacin de la hoja de clculo con tablas de SQL Server Manipulacin de datos de Excel utilizando OPENDATASOURCE y funciones OPENROWSET Crear hojas de clculo Excel con sp_makewebtask Automatizacin OLE

Comenzamos mostrando cmo crear una hoja de clculo Excel a partir de SQL Server en TSQL (Transact-SQL), crear una hoja de clculo, se adhieren a l como un servidor vinculado, escribir en l, leerlo, actualizarlo como si fuera una simple SQL tabla de servidor de base de datos, y luego sincronizar los datos de la hoja de trabajo con SQL Server. Tambin ilustran el uso de OPENQUERY, OPENDATASOURCE y OPENROWSET. Para crear la hoja de clculo Excel, se muestra cmo conectar a una fuente de ADODB de SQL Server y ejecutar SQL en esa fuente. A continuacin, te mostrar una alternativa manera de 'rpido truco' (usando sp_makewebtask) para crear y rellenar una hoja de excel desde Transact SQL. Si necesita ms control sobre la hoja de clculo Excel que se est creando, entonces te mostrar cmo hacerlo a travs de automatizacin OLE. Esto le permitir hacer cualquier cosa que usted puede hacer a travs de las pulsaciones de teclado, y le permiten generar completos informes en formato Excel con tablas dinmicas y grficos. Usando esta tcnica, debe ser capaz de rellenar los datos, o colocar datos en las llamadas particulares o rangos. Usted puede incluso hacer "sustituciones de macro ' Una palabra de advertencia antes de empezar. Si usted tiene la seguridad de su par en par, no es como t, que sera capaz de escribir datos en una hoja de clculo. Un intruso podra ser capaz de hacer con esa lista de contraseas o nmeros de tarjetas de crdito. En un sistema de produccin, este tipo de operacin debe estar debidamente delimitados. Tenemos la tendencia a crear una cola de trabajo y tener un usuario especial, con los permisos adecuados, en el Programador de tareas, a hacer todo lo que implica la automatizacin OLE o xp_cmdshell. Precauciones de seguridad pueden llegar a ser muy compleja, pero estn fuera del alcance del artculo. Algunos de lo que ilustran puede hacerse utilizando DTS o SSIS. Desafortunadamente, estos estn fuera del alcance de este artculo. De hecho, la transferencia de datos

entre Excel y SQL Server se puede hacer en una sorprendente variedad de formas, y que sera divertido un da para tratar de enumerarlos todos En primer lugar tenemos algunos datos de prueba simples * / CREATE TABLE # # CambridgePubs (Pubname VARCHAR (40), Direccin VARCHAR (80), CP VARCHAR (8)) INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Las abejas en la pared ", los '36 North Road, ',' Whittlesford, Cambridge CB2 4NZ ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) 'Cabeza Blackamoors' SELECT, '205 Victoria Road, Cambridge "," CB4 3LF ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Blue Lion', '2 camino Horningsea, Fen Ditton, Cambridge ',' CB5 8SZ ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Cambridge Blue', '85-87 Gwydir la calle, Cambridge ',' CB1 2LG ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) 'Campen del Tmesis' SELECT, 68 King Street, Cambridge ',' CB1 1LN ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) "Cross Keys 'SELECT, 77 calle del armio, ',' Caxton, Cambridge CB3 8PQ ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Crown Inn', '11 High Street, ',' Linton, Cambridge CB1 6HS ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Devonshire Arms', '1 Devonshire Road, Cambridge ',' CB1 2BH ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'duque de Argyle', '90 Argyle Street, Cambridge ',' CB1 3LS ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Duke Of Wellington', '49 limosna Hill, ',' Bourn, Cambridge CB3 7SH ' INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'Eagle Public House', 'Calle Benet, Cambridge ',' CB2 3QN ' / * Y as sucesivamente. (El archivo de importacin completa se encuentra en el ZIP, como es el Excel archivo!) Crear la tabla y luego ejecutar el contenido de CambridgePubs.SQL

Crear hojas de clculo Excel a travs de ADODB ----------------------------------------En primer lugar, tenemos que crear la hoja de clculo con los ttulos correctos (pubname, direccin, cdigo postal) Hay dos formas posibles que se podra hacer esto. La manera ms obvia es mediante la sentencia CREATE para crear la hoja de trabajo y definir las columnas, pero parece que no hay manera de hacerlo vinculando el archivo de Excel, a menos que el archivo de Excel que ya existe. Necesitamos un procedimiento almacenado de utilidad para llegar a ADODB con el fin de crear bases de datos y ejecutar SQL DDL y en contra de ella. * / CREAR PROCEDIMIENTO spExecute_ADODB_SQL @ DDL VARCHAR (2000), @ DataSource VARCHAR (100), @ Hoja VARCHAR (100) = NULL, @ ConnectionString VARCHAR (255) = "Provider = Microsoft.Jet.OLEDB.4.0;

Data Source =% DataSource; Extended Properties = Excel 8.0 ' AS DECLARE @ ObjExcel INT, @ Hr INT, @ Comandos VARCHAR (255), @ StrErrorMessage VARCHAR (255), @ ObjErrorObject INT, @ ObjConnection INT, @ Balde INT SELECT @ ConnectionString = REEMPLAZAR (@ ConnectionString, '% DataSource', @ DataSource) SI Hoja @ IS NOT NULL SELECT @ DDL = REPLACE (@ DDL, 'hoja'%, Hoja @) SELECT @ strErrorMessage = 'Hacer la conexin ADODB', @ ObjErrorObject = NULL EXEC @ hr = sp_OACreate 'ADODB.Connection', @ objConnection OUT SI @ hr = 0 SELECT @ strErrorMessage = 'Asignacin de ConnectionString propiedad "' + @ + ConnectionString '"', @ = @ ObjErrorObject objConnection SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjConnection, 'ConnectionString', @ ConnectionString SI @ hr = 0 SELECT @ strErrorMessage = "Conexin de apertura a XLS, para el archivo Crear o Append ' SI @ hr = 0 EXEC @ hr = sp_OAMethod ObjConnection @, 'Open' SI @ hr = 0 SELECT @ strErrorMessage 'Ejecutar DDL = "' + @ DDL + '"' SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjConnection, "Ejecutar", @ Cubo a cabo, @ DDL IF @ hr <> 0 COMENZAR DECLARE En origen VARCHAR (255), @ Descripcin VARCHAR (255), @ Helpfile VARCHAR (255), @ HelpID INT EXECUTE sp_OAGetErrorInfo @ ObjErrorObject, la produccin en origen, @ Descripcin del producto, la produccin Helpfile @, @ salida de HelpID SELECT @ strErrorMessage = 'Error al mismo tiempo' + COALESCE (@ strErrorMessage, 'hacer algo') + ',' + COALESCE (@ Descripcin,'') RAISERROR (@ strErrorMessage, 16, 1) FIN EXEC @ hr = sp_OADestroy @ ObjConnection GO -------------------------------------/ * Ahora que lo tenemos, es fcil * / spExecute_ADODB_SQL @ DDL = 'Crear CambridgePubs mesa (Texto pubname, texto Direccin, Cdigo postal Texto) ', @ DataSource = "C: \ CambridgePubs.xls ' - El archivo de Excel se han creado en el servidor de base de datos de la - Base de datos que actualmente tiene una conexin a - Ahora puede insertar datos en la hoja de clculo, si quisiramos spExecute_ADODB_SQL @ DDL = 'INSERT INTO CambridgePubs (Pubname, direccin, cdigo postal) los valores ('' El pjaro en la mano'', '' 23, Marshall Road, Cambridge CB4 2DQ'', '' CB4 2DQ'') ", @ DataSource = "C: \ CambridgePubs.xls '

- Se puede caer otra vez! spExecute_ADODB_SQL @ DDL = 'drop table CambridgePubs', @ DataSource = 'C: \ CambridgePubs.xls'

O manipulacin de archivos de Excel los datos a travs de un servidor vinculado ---------------------------------------------Ahora podemos vincular a la creacin de archivos de Excel de la siguiente manera * / EXEC sp_addlinkedserver 'CambridgePubDatabase', @ Srvproduct ='', @ = Proveedor de 'Microsoft.Jet.OLEDB.4.0', @ Datasrc = 'C: \ CambridgePubs.xls', @ Provstr = 'Excel 8.0; " GO EXEC sp_addlinkedsrvlogin 'CambridgePubDatabase', 'false' GO - A abandonar el enlace, lo hacemos! - EXEC sp_dropserver 'CambridgePubDatabase', 'droplogins' - Obtener los datos de hoja de clculo a travs de AbrirConsulta SELECT * FROM OPENQUERY (CambridgePubDatabase, 'select * from [CambridgePubs]') GO - O, ms sencillamente, hacer esto SELECT * FROM CambridgePubDatabase ... CambridgePubs - Por lo que ahora podemos insertar nuestros datos en la hoja de clculo Excel INSERT INTO ... CambridgePubDatabase CambridgePubs (Pubname, direccin, cdigo postal) SELECT pubname, direccin, cdigo postal desde # # CambridgePubs

/ * Sincronizacin de la hoja de clculo con tablas de SQL Server -------------------------------------------------- ---Como estamos manipular directamente los datos de Excel en la hoja de trabajo como si fuera una tabla que podemos hacer combinaciones. Qu pasa con la sincronizacin de la tabla despus de editar la hoja de clculo de Excel? Para probar esto, usted tendr que suprimir, alterar e insertar unas cuantas filas de la hoja de clculo Excel, recordando a cerrar despus de que lo haya hecho * / - En primer lugar, vamos a eliminar todas las filas de # # CambridgePubs - Que no existen en la hoja de clculo Excel DELETE FROM # # CambridgePubs Desde # # CambridgePubs c LEFT OUTER JOIN CambridgePubDatabase ... CambridgePubs ex En la letra c. La direccin como el ex. La direccin Y c. Pubname como el ex. Pubname Y c. Cdigo postal como el ex. Cdigo postal DONDE ex. Pubname IS NULL - A continuacin insertamos a # CambridgePubs las filas de la hoja de clculo - Que no existen en # CambridgePubs INSERT INTO # # CambridgePubs (Pubname, direccin, cdigo postal) SELECT ex. Pubname, ej. Direccin, ej. CP DE CambridgePubDatabase ... CambridgePubs ex LEFT OUTER JOIN # # CambridgePubs c

En la letra c. La direccin como el ex. La direccin Y c. Pubname como el ex. Pubname Y c. Cdigo postal como el ex. Cdigo postal Donde c. Pubname IS NULL - Todo hecho (syncronisation contrario sera similar)

/ * Manipulacin de datos de Excel utilizando OPENDATASOURCE y OPENROWSET -------------------------------------------------- ----------Si usted no quiere hacer la conexin, tambin puede leer los datos como este * / SELECT * DE OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', "Data Source =" C: \ CambridgePubs.xls "; Extended Properties = Excel 8.0 ') ... CambridgePubs - Y escribir en l ACTUALIZACIN OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', "Data Source =" C: \ CambridgePubs.xls "; Extended Properties = Excel 8.0 ') ... CambridgePubs Direccin SET = 'San Kilda Road, Cambridge ' DONDE pubname = "Jenny Wren" INSERT INTO OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', "Data Source =" C: \ CambridgePubs.xls "; Extended Properties = Excel 8.0 ') ... CambridgePubs (Pubname, direccin, cdigo postal) SELECT 'El St George', '65 Cavendish Road ',' CB2 4RT ' - Usted puede leer y escribir Hoja ToExcel utilizando OPENROWSET, - Si el estado de nimo le lleva SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; DATABASE = C: \ CambridgePubs.xls', 'Select * from CambridgePubs') ACTUALIZACIN OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; DATABASE = c: \ CambridgePubs.xls', "Select * from CambridgePubs ') SET Direccin = '34 Glemsford Road 'donde direccin = '65 Cavendish Road' INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; DATABASE = c: \ CambridgePubs.xls', "Select * from CambridgePubs ') (Pubname, direccin, cdigo postal) SELECT 'El Toro', 'camino de Antioqua', 'CB2 5TY'

/ * Crear hojas de clculo Excel con sp_makewebtask -------------------------------------------------En lugar de crear la hoja de clculo Excel con OLEDB Uno puede usar la sp_makewebtask Los usuarios deben tener permisos SELECT para ejecutar una consulta especfica y permisos CREATE PROCEDURE en la base de datos en la que la consulta se ejecutar. La cuenta de SQL Server debe tener permisos para escribir el documento HTML generado en la ubicacin especificada. Slo los miembros de la funcin de servidor sysadmin pueden suplantar a otros usuarios. * / sp_makewebtask @ outputfile = 'c: \ CambridgePubsHTML2.xls', @ Query = "Select * from # # CambridgePubs ', @ Colheaders = 1, @ FixedFont = 0, @ lastUpdated = 0, @ resultstitle = 'Cambridge Bares', @ Dbname = 'MyDatabaseName'

/ * Esto est bien para la distribucin de informacin de bases de datos, pero bueno no si posteriormente desea abrir a travs de ODBC. * /

/ * La automatizacin OLE ---------------Hasta ahora, todo bien. Sin embargo, de verdad queremos algo ms que esto. Cuando creamos un archivo de Excel para un informe de negocio, queremos que los datos y tambin queremos que el formato agradable, los rangos definidos, sumas, campos calculados y grficos bonitos. Si lo hacemos los informes financieros, queremos una tabla dinmica, y as sucesivamente con el fin de permitir un grado de minera de datos por parte del beneficiario. Un enfoque diferente se requiere. Podemos, por supuesto, el uso de Excel para extraer los datos de la base de datos. Sin embargo, en este ejemplo, vamos a crear una hoja de clculo, escribir los datos en l, encaja muy bien las columnas y definir un rango en torno a los datos * / ALTER PROCEDURE [dbo]. [SpDMOExportToExcel] ( @ SourceServer VARCHAR (30), @ SourceUID VARCHAR (30) = NULL, @ SourcePWD VARCHAR (30) = NULL, @ QueryText VARCHAR (200), @ Nombre VARCHAR (100), @ WorksheetName VARCHAR (100) = "Hoja de Trabajo", @ RangeName VARCHAR (80) = 'MyRangeName' ) AS INT DECLARE @ objServer, @ ObjQueryResults INT @ ObjCurrentResultSet INT, @ ObjExcel INT, @ ObjWorkBooks INT @ ObjWorkBook INT, @ ObjWorkSheet INT, @ ObjRange INT, @ Hr INT, @ Columns INT, @ Int filas, los @ Salida INT, @ CurrentColumn INT, @ CurrentRow INT, @ ResultSetRow INT, @ Off_Column INT, @ Off_Row INT, @ Comandos VARCHAR (255), @ ColumnName VARCHAR (255), @ Valor VARCHAR (255), @ StrErrorMessage VARCHAR (255), @ ObjErrorObject INT, @ Alfabeto VARCHAR (27) SELECT @ alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" SI @ QueryText IS NULL COMENZAR RAISERROR ('Una cadena de consulta se requiere para spDMOExportToExcel', 16, 1) RETURN 1 FIN - Establece el servidor en el servidor local SI SourceServer @ IS NULL SELECT @ SourceServer = @ @ servername SET NOCOUNT ON SELECT @ strErrorMessage = 'una instancia de la DMO ",

@ = @ ObjErrorObject objServer EXEC @ hr = sp_OACreate 'SQLDMO.SQLServer', @ objServer OUT SI @ SourcePWD IS NULL OR @ SourceUID IS NULL COMENZAR - Utilizar una conexin de confianza SI @ hr = 0 SELECT @ strErrorMessage = 'Configuracin de inicio de sesin para la autenticacin de Windows en el' + @ SourceServer, objErrorObject @ = @ objServer SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjServer, 'LoginSecure', 1 SI @ hr = 0 SELECT @ strErrorMessage = 'Iniciar sesin en el servidor solicitado mediante la autenticacin de Windows en el' + @ SourceServer SI @ SourceUID ES NULA Y @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjServer, Los Conctate ', null, @ SourceServer SI @ SourceUID no es NULL y @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjServer, 'Connect', NULL, @ SourceServer, @ SourceUID FIN ELSE COMENZAR SI @ hr = 0 SELECT @ strErrorMessage = 'Conexin''' + @ + SourceServer '' 'Con el ID de usuario''' + @ + SourceUID'''', @ = @ ObjErrorObject objServer SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjServer, 'Connect', NULL, @ SourceServer, SourceUID @, @ SourcePWD FIN - Ahora que ejecutar la consulta SI @ hr = 0 SELECT @ strErrorMessage = 'ejecutar la consulta "' + @ QueryText + '", en' + @ SourceServer, @ = @ ObjErrorObject objServer, @ = Comando de ExecuteWithResults ("'+ @ QueryText +'") ' SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjServer, comando @, @ objQueryResults OUT SI @ hr = 0 SELECT @ strErrorMessage = 'conseguir el primer conjunto de resultados para "' + @ QueryText + '", en' + @ SourceServer, @ = @ ObjErrorObject objQueryResults SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjQueryResults, 'CurrentResultSet', @ objCurrentResultSet OUT SI @ hr = 0 SELECT @ strErrorMessage = 'a encontrar las filas y columnas "' + @ QueryText + '", en' + @ SourceServer SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjQueryResults, 'Columnas', @ columns OUT SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjQueryResults, las filas, filas de @ OUT - Por lo que ahora tenemos los queryresults. Ponemos en marcha Excel SI @ hr = 0 SELECT @ strErrorMessage = 'Crear la aplicacin de Excel, en' + @ SourceServer, objErrorObject @ = @ objExcel SI @ hr = 0 EXEC @ hr = sp_OACreate "Excel.Application ', @ objExcel OUT SI @ hr = 0 SELECT @ strErrorMessage = 'Obtener el objeto Workbooks' SI @ hr = 0 EXEC @ hr = sp_OAGetProperty @ ObjExcel, de los libros ", @ ObjWorkBooks OUT - Crear un libro SI @ hr = 0 SELECT @ strErrorMessage = 'Agregar un libro ", @ = @ ObjErrorObject objWorkBooks SI @ hr = 0

EXEC @ hr = sp_OAGetProperty @ ObjWorkBooks, 'Aadir', @ objWorkBook OUT - Y una hoja de clculo SI @ hr = 0 SELECT @ strErrorMessage = 'Agregar una hoja de trabajo ", @ = @ ObjErrorObject objWorkBook SI @ hr = 0 EXEC @ hr = sp_OAGetProperty ObjWorkBook @, 'Worksheets.Add', @ ObjWorkSheet OUT SI @ hr = 0 SELECT @ strErrorMessage = "Poner nombre a una hoja de clculo como" ' + @ + WorksheetName '"', @ = @ objErrorObject objWorkBook SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjWorkSheet, 'nombre', @ WorksheetName SELECT @ CurrentRow = 1 - As que vamos a escribir los ttulos de las columnas SELECT @ CurrentColumn = 1 WHILE (@ CurrentColumn INFERIOR O IGUAL @ columns Y @ hr = 0) COMENZAR SI @ hr = 0 SELECT @ strErrorMessage = 'conseguir ttulo de la columna' + LTRIM (STR (@ CurrentColumn)), @ = @ ObjErrorObject objQueryResults, @ Command = 'ColumnName (' + CONVERT (VARCHAR (3), @ CurrentColumn) + ')' SI @ hr = 0 EXEC @ hr = sp_OAGetProperty @ ObjQueryResults, Comando @, @ ColumnName OUT SI @ hr = 0 SELECT @ strErrorMessage = 'asignar el ttulo de la columna' + + LTRIM (STR (@ CurrentColumn)) + 'De la cadena de consulta ", @ = @ ObjErrorObject objExcel, @ = Comando de las clulas ('+ LTRIM (STR (@ CurrentRow)) +', ' + LTRIM (STR (@ CurrentColumn)) + '). Valor' SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjExcel, comando @, @ ColumnName SELECT @ @ CurrentColumn CurrentColumn = + 1 FIN - Formato a los ttulos en negrita muy bien SI @ hr = 0 SELECT @ strErrorMessage = 'dar formato a los encabezados de columna en negrita', @ = @ ObjErrorObject objWorkSheet, @ Command = 'Range ("A1:' + SUBSTRING (@ alfabeto, @ CurrentColumn / 26, 1) + SUBSTRING (@ alfabeto, @ CurrentColumn 26%, 1) + '1 '+' "). Font.Bold ' SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjWorkSheet, comando @, 1 - Ahora escribimos los datos SELECT @ CurrentRow = 2 WHILE (@ = @ CurrentRow menores Filas + 1 Y @ hr = 0) COMENZAR SELECT @ CurrentColumn = 1 WHILE (@ CurrentColumn INFERIOR O IGUAL @ columns Y @ hr = 0) COMENZAR SI @ hr = 0 SELECT @ StrErrorMessage = 'Obtener el valor de la cadena de consulta " + LTRIM (STR (@ CurrentRow)) + ',' + LTRIM (STR (@ CurrentRow)) + ')', @ = @ ObjErrorObject objQueryResults, @ @ CurrentRow ResultSetRow = - 1

SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjQueryResults, 'GetColumnString', @ Valor de salida, ResultSetRow @, @ CurrentColumn SI @ hr = 0 SELECT @ strErrorMessage = 'Asignar el valor de la cadena de consulta " + LTRIM (STR (@ CurrentRow - 1)) + ',' + LTRIM (STR (@ CurrentColumn)) + ')', @ = @ ObjErrorObject objExcel, @ = Comando de las clulas ('+ STR (@ CurrentRow) +', ' + STR (@ CurrentColumn) + '). Valor' SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjExcel, comando @, @ valor SELECT @ @ CurrentColumn CurrentColumn = + 1 FIN SELECT @ @ CurrentRow CurrentRow = + 1 FIN - Definir el nombre de rango -.. Cambiar el tamao de las clulas (1, 1) (10, 5) Nombre = "theData" SI @ hr = 0 SELECT @ strErrorMessage = 'asignar un nombre a un rango' + LTRIM (STR (@ CurrentRow - 1)) + ',' + LTRIM (STR (@ CurrentColumn - 1)) + ')', @ = @ ObjErrorObject objExcel, @ = Comando de las clulas (1, 1) Cambiar el tamao de (. '+ STR (@ CurrentRow 1) +', ' + STR (@ CurrentColumn - 1) + '.) Nombre' SI @ hr = 0 EXEC @ hr = sp_OASetProperty @ ObjExcel, comando @, @ RangeName - Ahora AutoFilt las columnas que hemos escrito a la SI @ hr = 0 SELECT @ = strErrorMessage de ajuste automtico de las columnas ", @ = @ ObjErrorObject objWorkSheet, @ Command = 'Columnas ("A:" + SUBSTRING (@ alfabeto, (@ columns / 26), 1) + SUBSTRING (@ alfabeto, (@% Columnas 26), 1) + '"). Ajuste automtico' SI @ hr = 0 - inserto dentro de la cubeta @ (cubo) EXEC @ hr = sp_OAMethod @ ObjWorkSheet, comando @, @ a cabo la produccin SI @ hr = 0 SELECT @ command = "del" '+ @ nombre +' "' SI @ hr = 0 EXECUTE master .. xp_cmdshell @ Command, no_output SI @ hr = 0 SELECT @ strErrorMessage = 'Guardar el libro como "' + @ nombre + '"', @ = @ ObjErrorObject objRange, @ Command = 'SaveAs ("' + @ nombre + '")' SI @ hr = 0 EXEC @ hr = sp_OAMethod @ ObjWorkBook, @ Command SI @ hr = 0 SELECT @ strErrorMessage = 'cierre de Excel, @ = @ ObjErrorObject objExcel EXEC @ hr = sp_OAMethod ObjWorkBook @, 'Close' EXEC sp_OAMethod @ ObjExcel, 'Close' IF @ hr <> 0 COMENZAR DECLARE En origen VARCHAR (255), @ Descripcin VARCHAR (255), @ Helpfile VARCHAR (255), @ HelpID INT EXECUTE sp_OAGetErrorInfo @ ObjErrorObject, @ Salida de la fuente, la salida @ Descripcin, @ Salida de Archivo de ayuda, la salida @ HelpID SELECT @ h, en origen, @ Descripcion, @ Helpfile, @ HelpID de salida SELECT @ strErrorMessage = 'Error al mismo tiempo' + COALESCE (@ strErrorMessage, hacer algo) + ',' + COALESCE (@ Descripcin,'')

RAISERROR (@ strErrorMessage, 16, 1) FIN EXEC sp_OADestroy @ ObjServer EXEC sp_OADestroy @ ObjQueryResults EXEC sp_OADestroy @ ObjCurrentResultSet EXEC sp_OADestroy @ ObjExcel EXEC sp_OADestroy @ ObjWorkBookks EXEC sp_OADestroy @ ObjWorkBook EXEC sp_OADestroy @ ObjRange REGRESO @ h GO - Ahora podemos crear nuestra hoja de clculo de los pubs, y puede hacerlo desde cualquiera de - Nuestros servidores spDMOExportToExcel SourceServer @ = "MyServer", @ SourceUID = 'MYUSERID', @ SourcePWD = "micontrasea", @ QueryText = 'uso MyDatabase seleccione pubname, direccin, cdigo postal desde # # CambridgePubs ', @ Filename = "C: \ MyPubDatabase.xls ', @ WorksheetName = 'MyFavouritePubs', @ RangeName = 'MyRangeName' - O si usted est utilizando la seguridad integrada! spDMOExportToExcel SourceServer @ = "MyServer", @ QueryText = 'uso MyDatabase seleccione pubname, direccin, cdigo postal desde # # CambridgePubs ', @ Filename = "C: \ MyPubDatabase.xls ', @ WorksheetName = 'MyFavouritePubs', @ RangeName = 'MyRangeName' / * Si bien este es un procedimiento muy til almacenado, es probable que tenga que modificar y agregar a l para fines particulares. Utilizamos el mtodo de DMO porque nos gusta para volcar los datos en Excel crear hojas de clculo de los usuarios, por ejemplo, nombres de usuarios, Historias de empleo. Sin embargo, una versin ADODB es muy simple de hacer y se puede hacer mucho ms rpido para lecturas y escrituras. Acabamos de insertar los valores, pero usted puede insertar frmulas y NumberFormat formato) y crear o cambiar las fronteras. Usted puede, de hecho, manipular la hoja de clculo en cualquier forma que desee. Cuando hacemos esto, podemos grabar macros en Excel y luego convertir estas macros para TSQL! Utilizando el ejemplo anterior, que debe ser simple * /

Introduction
In many time you will find yourself with some Excel file need to be saved or Export to SQL Server,I know it possible by using SQL Server Import and Export Wizard.But this depend on business Scenario itself ,so one of the scenario is creating web application or windows application that read Excel file and Move it to SQL SERVER Database,so this sample assume that you have one of those scenarios.

Sample Demo

As you can see from the above image the sample contain the page which byself contain three controls 1. 2. 3. FileUpload Control to allow you browse and upload excel file Button to Import data from excel and export it to SQL Server Label to show the message about uploading status

Building the Sample


Before run and test the sample you need to follow the next steps. Note: before start reading the steps I want let you to know that I havent test this sample either on ASP.NET 3.5 or 32-bit MS Office,so may be you do not need the step 1 and step 2. 1. 2. 3. Create an IIS web site Change .Net Framework to 4.0 for Application Pool of this site Create Excel file and make sure that file contain the column name as following image

4.Create Table in SQL Server and make sure has the same Columns name with appropriate columns data type.

Description
This sample work as I mentioned above by ask user to upload Excel file (*.xsl,*.xslx) and then check the content type of that file then open excel file and save it's data to SQL Server Database.

Visual BasicC#

'if you have Excel 2007 uncomment this line of code ' string excelConnectionString =string.Format("Provider=Microsof t.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0",path); 'Define the content type Dim ExcelContentType As String = "application/vnd.ms-excel" Dim Excel2010ContentType As String = "application/vnd.openxmlform ats-officedocument.spreadsheetml.sheet" If FileUpload1.HasFile Then If FileUpload1.PostedFile.ContentType = ExcelContentType Or F ileUpload1.PostedFile.ContentType = Excel2010ContentType Then Try 'Save file path Dim path As String = String.Concat(Server.MapPath("~/ TempFiles/"), FileUpload1.FileName) 'Save File as Temp then you can delete it if you want FileUpload1.SaveAs(path) 'For Office Excel 2010 please take a look to the fol lowng link http://social.msdn.microsoft.com/Forums/enUS/exceldev/thread/0f03c2de-3ee2-475f-b6a2-f4efb97de302/#ae1e6748-297d4c6e-8f1e-8108f438e62e Dim excelConnectionString As String = String.Format(" Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Exc el 8.0", path) ' Create Connection to Excel Workbook Using connection As New OleDbConnection(excelConnecti onString) Dim Command As OleDbCommand = New OleDbCommand("S elect * FROM [Sheet1$]", connection) connection.Open() 'Create DbDataReader to Data Worksheet Using reader As DbDataReader = Command.ExecuteRea der()

' SQL Server Connection String Dim sqlConnectionString As String = "Data Sou rce=.\sqlexpress;Initial Catalog=ExcelDB;Integrated Security=True" ' Bulk Copy to SQL Server Using bulkCopy As New SqlBulkCopy(sqlConnecti onString) bulkCopy.DestinationTableName = "Employee " bulkCopy.WriteToServer(reader) Label1.Text = "The data has been exported succefuly from Excel to SQL" End Using End Using End Using Catch ex As Exception Label1.Text = ex.Message End Try End If End If

You might also like