Можно ли хранить скрытые метаданные, которые связаны с определенной таблицей или ячейкой в ​​документе Word? - PullRequest
5 голосов
/ 29 марта 2010

Я пытаюсь сохранить метаданные (в основном, уникальный идентификатор) вместе с каждой ячейкой таблицы в документе Word. В настоящее время для надстройки, которую я разрабатываю, я запрашиваю базу данных и строю таблицу внутри документа Word, используя полученные данные.

Я хочу иметь возможность сохранить любые изменения пользователя в документе и сохранить их обратно в базе данных. Сначала я хотел сохранить уникальный идентификатор вместе с каждой ячейкой в ​​таблице, чтобы я мог указать, какие записи обновлять. Я также хотел бы хранить своего рода флаг isChanged внутри каждой ячейки, чтобы я мог сказать, какие ячейки были изменены. Я обнаружил, что могу добавить необходимую информацию в свойство «ID» ячейки, однако эта информация не будет сохранена, если пользователь сохранит документ, закроет его и снова откроет. Затем я попытался сохранить данные, добавив данные в коллекцию «Поля», но это не сработало, и я выдал ошибку времени выполнения. Вот код, который я пробовал:

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);

Это прекрасно компилируется, но выдает эту ошибку времени выполнения "Эта команда недоступна".

Так это вообще возможно? Или я не в том направлении?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

Завелось с использованием "ContentControls" для хранения необходимой мне информации. Я использовал поле «Заголовок» для хранения уникального идентификатора и поле «тег», чтобы отслеживать, было ли поле изменено или нет. Смотрите эту ссылку для получения дополнительной информации: http://blogs.technet.com/gray_knowlton/archive/2010/01/15/associating-data-with-content-controls.aspx

1 голос
/ 29 марта 2010

Поскольку «документ Word 2007» представляет собой XML, вы можете добавить пространство имен в документ, а затем добавить элементы с атрибутами из вашего пространства имен. Word должен игнорировать ваше пространство имен при загрузке и сохранении. Кроме того, вы можете добавлять новые элементы для хранения любой необходимой информации (метаданных).

С учетом вышесказанного я не использовал эту технику в Word, но успешно справился в Excel 2003.

Первое, что нужно попробовать, - это создать «документ Word 2007». В вашем случае добавьте простую таблицу два на два. Откройте его с помощью текстового или XML-редактора и добавьте свое пространство имен, а также добавьте атрибут и добавьте элемент. Откройте с помощью Word, внесите изменения и сохраните их. Откройте редактор и убедитесь, что ваш атрибут пространства имен и элемент не были изменены.

...