Я работаю над приложением, которое должно создавать текстовые документы с использованием Office Open XML SDK 2.5
. Идея, которую я имею сейчас, это то, что я начну с шаблона с пустым телом (так что я уже определил все пространства имен и т. Д.) И добавлю к нему Paragraphs
. Если мне нужны изображения, я добавлю ImageParts
и попытаюсь дать ImagePart
идентификатор, присутствующий в предопределенной части абзаца, который будет содержать изображение. Я буду хранить абзацы как xml в базе данных, извлекать те, которые мне нужны, заполнять/изменять некоторые значения, если это необходимо, и вставлять их в документ Word. Но это сложная часть, как я могу легко вставить их таким образом, чтобы мне не приходилось запрашивать их содержимое, чтобы позже найти один из абзацев? Другими словами, мне нужен идентификатор. У меня есть некоторые варианты:Есть ли способ назначить идентификаторы абзацев в Open XML SDK 2.5?
- Для каждого возможного абзаца у меня есть вручную создать
SdtBlock
. ЭтотSdtBlock
будет иметь идентификатор, который соответствует идентификатору каждого абзаца в базе данных. Это, похоже, много ручной работы, хотя, и я предпочел бы легче создавать будущие текстовые документы ... Я выбрал этот подход, но я вставляюBuilding Blocks
, который может храниться в шаблонах с определенным тэгом. - Создайте абзацы, скопируйте xml из инструмента разработчика и вручную добавьте
ParagraphId
. Хотя это кажется еще более кошмаром, потому что для каждого будущего нового абзаца мне придется создавать новые идентификаторы и т. Д. Также было бы невозможно вставлять таблицы, так как нет никакого способа (afaik) дать те Id. - Работайте с закладками, чтобы узнать, куда вставлять данные. Мне это действительно не нравится, поскольку закладки видны для всех. Я знаю, что могу их заменить, но потом я не могу идентифицировать отдельные абзацы позже.
- **** моя база данных и просто добавьте все в шаблон: D Удалите абзацы, которые мне не нужны, удалив закладки с их контентом. Эта идея кажется худшей из всех, хотя, поскольку я не хочу зависеть от наличия файла шаблона со всем возможным содержимым в текстовом файле, который мне нужно создать.
Любой, у кого есть опыт работы в OpenXml
, кто знает, какой из них был бы лучшим? Может быть, есть другой подход, который лучше, и я полностью забыл? Идеальным решением было бы то, что я могу добавить идентификаторы в Office Word
, но это не так, как я еще ничего не нашел.
Заранее благодарен!
У меня есть несколько идей об OpenXML, но я не совсем понимаю, как именно вы работаете с вашими шаблонами и документами, и мой ответ будет сильно зависеть от него. Вам нужно открыть документ в слове, имеющем эти идентификаторы? BTW, закладки могут быть скрыты - просто добавьте знак подчеркивания перед именем (вы можете сделать это только из кода) –
Я хочу пустое тело (= пустой шаблон слова), и я добавляю абзацы, которые мне нужны. Пункты, которые я получил от базы данных. Но документ будет сделан в зависимости от того, какие параметры выбирает пользователь. Поэтому, если параметры меняются, я хочу, чтобы убрать некоторые абзацы, например, мне нужен Id –
Почему вы не можете просто использовать его, как обычный xml, добавить свои собственные элементы с идентификатором и переопределить их из базы данных? В чем причина того, что вам нужно держать его в строгом OpenXML? Я вижу только одну причину этого - вам нужно открыть его в Word, и Word, безусловно, удалит все, что он не может понять. Если вам не нужно открывать в Word до того, как документ готов, просто используйте свои собственные элементы. –