2010-03-29 9 views
5

Estoy tratando de almacenar metadatos (básicamente una identificación única) junto con cada celda de una tabla en un documento de Word. Actualmente, para el complemento que estoy desarrollando, estoy consultando la base de datos y construyendo una tabla dentro del documento de Word utilizando los datos que se recuperan.¿Es posible almacenar información de metadatos ocultos que está vinculada a una tabla o celda específica dentro de un documento de Word?

Quiero ser capaz de guardar cualquiera de las ediciones del usuario en el documento, y persistirlo de nuevo a la base de datos. Mi idea inicial era almacenar una identificación única junto con cada celda en la tabla para poder saber qué registros actualizar. También me gustaría almacenar algún tipo de indicador "isChanged" dentro de cada celda para poder decir qué células se cambiaron. Descubrí que podía agregar la información necesaria a la propiedad "ID" de la celda; sin embargo, esa información no se conservaba si el usuario guardaba el documento, lo cerraba y lo volvía a abrir. Luego intenté almacenar los datos agregando datos a la colección "Campos", pero eso no funcionó y arrojó un error de tiempo de ejecución. Aquí está el código que he intentado:

object t1 = Word.WdFieldType.wdFieldEmpty; 
object val = "myValue: " + counter; 
object preserveFormatting = true; 
tbl.Cell(i, j).Range.Fields.Add(tbl.Cell(i, j).Range, ref t1, ref val, ref preserveFormatting); 

Este compila bien, pero lanza este error de ejecución "Este comando no está disponible".

Entonces, ¿esto es posible? ¿O me dirijo en la dirección incorrecta?

Gracias de antemano.

+0

¿A qué versión de Word se dirige? ¿Es esto un documento XML, documento de Word 2007, formato de texto enriquecido? – AMissico

+0

Lo siento, debería haber mencionado eso antes. Targeting versión 2007, y este es un documento de Word 2007. – leftend

Respuesta

1

Me lastimé usando "ContentControls" para almacenar la información que necesitaba. Usé el campo "Título" para almacenar la identificación única, y el campo "etiqueta" para rastrear si el campo había sido cambiado o no. Consulte este enlace para obtener más información: http://blogs.technet.com/gray_knowlton/archive/2010/01/15/associating-data-with-content-controls.aspx

+0

Me olvidé por completo de estos controles. Lo siento. – AMissico

+1

No se necesitan disculpas: cuanto más indago en el desarrollo de complementos, más me doy cuenta de lo complicado que es. Gracias de nuevo por su respuesta, como dije, realmente me señaló en la dirección correcta. – leftend

+0

Desafortunadamente, esto no funciona para el .doc-Format "antiguo", ya que 'Word.Table.Title' así como' Word.Table.Descr' son propiedades que se han agregado con la introducción del formato OpenXML. Para archivos .doc, aún no he encontrado una solución satisfactoria, ya que al agregar comentarios al 'Word.Table.Range' siempre se activará la vista de revisión cuando el .doc se abra en un subprograma como ver la palabra. – M463

1

Dado que un "documento de Word 2007" es XML, puede agregar un espacio de nombre al documento y luego adorar los elementos con atributos de su espacio de nombres. Word debe ignorar su espacio de nombres al cargar y guardar. Además, puede agregar nuevos elementos para almacenar cualquier información (metadatos) necesaria.

Dicho esto, no he utilizado esta técnica con la palabra, pero lo he hecho con éxito utilizando Excel 2003.

primero que hay que tratar, es crear un desnudo "Documento de Word 2007". En su caso, agregue una tabla simple de dos por dos. Ábralo con un editor de texto o XML y agregue su espacio de nombres, y adore un atributo y agregue un elemento. Abra con Word haga un cambio y guárdelo. Abra con el editor y asegúrese de que su atributo y elemento de espacio de nombres no se hayan modificado.

+0

¡Gracias por ayuda! No pude hacer que esto funcionara, pero definitivamente me ayudó a ir en la dirección correcta. – leftend

Cuestiones relacionadas