Программно найти таблицу в документе Word - PullRequest
2 голосов
/ 22 ноября 2010

Я хочу обновить различные таблицы в текстовых документах, используя этот метод ... http://msdn.microsoft.com/en-us/library/2dw39e8e.aspx

Я собираюсь добавить строки на основе представления SQL.Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь программно найти объекты таблицы в документе Word, чтобы я мог добавить строки.Существует несколько таблиц, и они могут быть расположены в разных местах документа.Я не могу найти поле «TableID» или что-то подобное, что могу отредактировать в документе Word, чтобы найти его программно.

Я использую Word 2010 и Visual Studio 2010.

Спасибо за любую помощь, Аарон

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Вы можете поместить таблицу в элемент управления контентом. Элемент управления контентом может иметь идентификатор (и тег, и заголовок).

Другой подход для добавления строк заключается в том, чтобы обернуть соответствующую строку в элементе управления содержимым и повторить ее. В этой модели вы помещаете свои данные SQL в пользовательскую часть XML. Встроенная привязка данных не поддерживает повторяющееся содержимое, но вы можете сделать это через VSTO и / или Open XML SDK. Я предложил соглашение о том, как вы можете настроить это, на dev.plutext.org/svn/docx4j/trunk/docx4j/sample-docs/databinding/conventions.html

1 голос
/ 22 ноября 2010

Объект Table имеет свойство ID, которое вы можете получить / установить, хотя он предназначен для сохранения только в виде веб-страницы, и поэтому любые установленные идентификаторы не сохраняются в .doc (x | m) формат.

Существует поле описания (.Descr), которое было добавлено в Word 2010, которое вы могли бы использовать, но даже Word 2007 не поддерживает его, я не знаю, будет ли это проблемой, если вы используете свою работу в другом месте, кроме среда, которую вы заявляете.

Dim cTbl, targetTbl As Table

For Each cTbl In ActiveDocument.Tables
    If cTbl.Descr = "target-id" Then
        Set targetTbl = cTbl
        Exit For
    End If
Next

Лучше всего, если нет, - убедиться, что в таблице есть известная ячейка с идентификатором для этой таблицы, и перебирать таблицы, пока не найдете нужную. Либо так, либо заранее знайте порядок столов (кажется, что это не вариант для вашего сценария). Возможно, вы могли бы использовать собственные стили для каждой таблицы, которые ничего не делают, но имена которых можно использовать для идентификации - аналогично использованию классов CSS для идентификации в HTML DOM.

...