2010-09-21 16 views
5

Estoy tratando de usar una lectura de docx a través del SDK OpenXML como plantilla en una aplicación web .Net para cartas de formulario (esencialmente). Tengo un docx con el formato que quiero, marcado con las etiquetas XML Schema definidas de un xsd (como se llamen, la ayuda es extremadamente inútil en esto).Plantillas de WordML con esquema XML y SDK de OpenXML

Lo único similar que encontré en Google fue lo que parecía estar reemplazando los elementos CustomXmlBlock con elementos de texto con los datos deseados. Esto parece ... desordenado y frágil.

También tengo la complicación adicional de que algunos de los datos son jerárquicos, con elementos para secciones y luego elementos en esa sección. Esto parece romper completamente el método anterior.

Entonces, ¿alguien puede indicarme la dirección correcta para hacer esto, o sugerir una mejor manera de manejar las plantillas de letras?

Respuesta

5

Hay una serie de opciones:

  1. Lo que está haciendo, esquema XSD mapeo. Esto se introdujo en Word 2003. Realmente solo estaba realmente activo en esa versión de Word, ya que cuando salió Word 2007, el nuevo método preferido de formularios se convirtió en el # 2.
  2. Controles de contenido. Más sobre esto a continuación.
  3. probado y verdadero son marcadores. Si está interesado, hay un artículo here.

Para controles de contenido , el concepto es simple: envolver sus controles de contenido en la jerarquía necesaria. Es decir, por ejemplo, tener un Control de contenido de selector de fecha y un Control de contenido de texto enriquecido y luego agruparlos. Luego, dentro del Rich Text Content Control, coloque un control de contenido de cuadro combinado . Eric White ha escrito un gran artículo de inicio sobre esto al recuperar contenido desde el interior de Content Controls al Processing all Content Parts in an Open XML WordprocessingML Document. Este artículo es una introducción mucho más completa a Content Controls en sus enlaces Using Open XML WordprocessingML Documents as Data Sources.

Más enlaces en controles de contenido: sitio

  1. Brian Jones tiene un montón de grandes artículos. Creo que estos fueron los primeros: The Easy Way to Assemble Multiple Word Documents y Create a rich Word document based on your own custom XML (without the need for XSLT).
  2. El Word Content Control Toolkit. Probablemente la mejor herramienta para trabajar con controles de contenido.
  3. Visual How To Content. Muchos artículos aquí se ocupan de controles de contenido.

Para trabajar con controles de contenido manualmente en el cliente de Word, permitirá a la cinta "desarrollador" de Opciones y luego insertar controles de contenido y establecer sus propiedades de la sección izquierda del grupo Controles en el Cinta de desarrollador.

+0

Guau, eso es excelente, ni siquiera sabía que existían los controles de contenido. Voy a aceptar esto y otorgaré la recompensa, aunque tengo una pregunta, más bien como una confirmación.Parece que no hay soporte integrado para ningún tipo de estructura repetitiva (tablas, listas, etc.) con controles de contenido. Supongo que puse un Rich Text Content Control en el documento como marcador de posición, luego genero la tabla o lista usando OpenXML sdk y lo configuro como el contenido del control de contenido. –

+0

@Matt S: He incluido algunos enlaces adicionales que también deberían ayudarlo a comenzar. Hay varias formas de hacer repetidores con Controles de Contenido: uno es lo que mencionaste. La otra forma es usar Building Blocks. Otra forma es hacer lo contrario de lo que mencionaste: coloca una tabla con solo una fila de encabezado y luego crea filas pobladas con CC en las celdas. Mire también el Word Content Control Kit, que le ahorrará la vida al trabajar con CC hasta que se familiarice mucho más. –

+0

@Matt S, eso es esencialmente correcto. Necesita una forma de decir qué control de contenido es un marcador de posición repetido. http://dev.plutext.org/svn/docx4j/trunk/docx4j/sample-docs/databinding/conventions.html sugiere una forma de hacerlo. – JasonPlutext

Cuestiones relacionadas