Combinar correspondencia de varias filas en un solo documento

Combinar correspondencia de varias filas en un solo documento

Tengo un archivo excel con diferentes campos en cada columna:

Campo 1__ | Campo 2__ | etc.
F1 Elemento 1 | F2 Artículo 1 | etc.
F1 Elemento 2 | F2 Elemento 2 | etc.

cada campo tiene una cantidad diferente de elementos.

Quiero crear un documento de Word 2010 que enumere todos los elementos de cada campo en un solo documento y no dividirlo en varios documentos para cada registro. Entonces el documento final de Word se ve así:

Campo 1
__ F1 Artículo 1
__ F1 Artículo 2

Campo 2
__ F2 Artículo 1
__ F2 Artículo 2
__ F2 Artículo 3

Las etiquetas "Campo 1" y "Campo 2" no necesitarían un campo de combinación de correspondencia, pero todos los elementos debajo del campo deberían combinarse para mostrarse en un solo documento. ¿Es posible hacer esto? ¿Alguna idea o recurso sobre cómo lograrlo?

Respuesta1

Usaría una herramienta de consultas e informes como SQL Server Reporting Services para esto. Puede conectarlo a un archivo Excel a través de ODBC, por ejemplo

http://weblogs.sqlteam.com/joew/archive/2008/08/22/60695.aspx

El diseño del informe tendría dos tablas: una para el campo 1 y la siguiente para el campo 2. Necesitaría escribir dos declaraciones SQL SELECT (bastante simples) para obtener los datos como dos conjuntos de datos.

Reporting Services hace un buen trabajo al renderizar en Word. El diseño puede ser mucho más complejo que una combinación de correspondencia de Word, por ejemplo, múltiples regiones de datos, subinformes anidados, gráficos complejos, etc.

Puede ejecutar Reporting Services como una aplicación de escritorio, incrustarlo en una aplicación de Windows o Word o implementarlo en un sitio de SharePoint o en un portal simple de Reporting Services.

Respuesta2

puedepodrá utilizar el campo BASE DE DATOS de Word para esto. El cuadro de diálogo para insertar uno no está en la cinta, por lo que debe buscarlo en Opciones de Word y colocarlo en QAT o algo así. Pero sufre uno o dos problemas, por lo que probablemente sea mejor insertar el campo manualmente: use Ctrl-F9 para insertar un par de códigos de llave de campo especiales para tener

{  }

(No puedes simplemente escribir estas llaves en el teclado).

Entonces, todo lo que esté entre { } es texto normal. Supongamos que tu documento de Excel se llama c:\xl\mywb.xlsx, los datos están en una hoja llamada Hoja1$ y tienes 3 campos llamados Campo1, Campo2 y Campo3. Entonces su primer campo BASE DE DATOS puede verse así:

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

Tenga en cuenta las barras invertidas duplicadas en el nombre de la ruta. Una vez que haya ingresado eso, seleccione el campo, presione F9 para ejecutarlo, luego use Alt-F9 para ver los resultados. Si están cerca de lo que necesita para su primera columna, esto puede funcionar bien para usted; si no lo están, probablemente sea un buen momento para renunciar a este enfoque. Si se informa un error, probablemente se deba a un error tipográfico.

Una vez que tenga una columna funcionando, copie/pegue el campo de la base de datos y cambie los nombres para que tenga

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf2.[field2] FROM [Sheet1$] cf2 WHERE ((cf2.[field2] IS NOT NULL ))" \h }

luego seleccione F9, Alt-F9 nuevamente. Si todo está bien, repita para los campos restantes.

Algunas notas:

WHERE ((cf2.[field2] IS NOT NULL )) está ahí para lidiar con el hecho de que sus columnas tienen diferentes números de celdas. Pero es posible que necesites un poco más que eso y esta técnica eliminarátodoceldas en blanco, no solo celdas vacías en la parte inferior de la columna.

\h simplemente agrega un encabezado de columna.

"cf1", "cf2" son "nombres de alias de TABLA" de SQL. Puedes inventarlos según sea necesario. No deberían ser necesarios, pero están ahí porque sin ellos Word tiende a confundirse un poco, como puede descubrir si intenta insertar estos campos usando el cuadro de diálogo del campo BASE DE DATOS (que no inserta estos nombres de alias).

información relacionada