Замените Контент Контроля текстом - PullRequest

Ответы [ 2 ]

0 голосов
/ 10 мая 2018
    private static void replaceTextValue(WordprocessingMLPackage template, String name, String placeholder)
        throws Exception {

    List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), SdtBlock.class);
    // System.out.println(template.getMainDocumentPart().getXML());
    for (Object text : texts) {
        SdtBlock textElement = (SdtBlock) text;
        List<Object> cList = textElement.getSdtContent().getContent();
        ClassFinder finder = new ClassFinder(Text.class);
        new TraversalUtil(cList, finder);
        for (Object o : finder.results) {
            Object o2 = XmlUtils.unwrap(o);
            if (o2 instanceof org.docx4j.wml.Text) {
                String CTagVal = ((org.docx4j.wml.Text) o2).getValue();

                if (CTagVal.equalsIgnoreCase(placeholder)) {
                    org.docx4j.wml.Text txt = (org.docx4j.wml.Text) o2;
                    txt.setValue(name);
                }
            } else {
                System.out.println(XmlUtils.marshaltoString(o, true, true));
            }
        }
    }
}

этот метод заменяет текст внутри элемента управления

0 голосов
/ 05 мая 2018

Я сам работаю над управлением контентом в docx4j. Если вы просто хотите просмотреть xml файла docx, вы можете заменить расширение файла .docx на .zip, что, по сути, и есть. Затем перейдите в ZIP-файл, и вы найдете базовый XML. Я полагаю, что есть приложения, которые позволят вам редактировать и сохранять XML-документы в формате docx, но пока не обращали на это внимания.

Если вы хотите вставить элемент управления содержимым в текстовый шаблон, сначала необходимо включить вкладку разработчика. см https://msdn.microsoft.com/en-us/library/bb608625.aspx. Это добавит раздел Controls на вкладке разработчика. см .: https://gregmaxey.com/word_tip_pages/content_controls.html

Я не нашел хорошего примера фактической замены переменных с помощью элементов управления только с помощью XmlUtils.unmarshallFromTemplate (xmlString, mappings), в котором, похоже, много кварков. Если вы решите эту часть, пожалуйста, напишите.

...