Jak zastąpić zawartość w dokumencie template docx i Open XML SDK 2.0 (Aug 09)?

Mam dokument" template " docx, który zawiera pożądany układ i chcę wstawić zawartość za pomocą C#, ale nie mogę znaleźć sposobu na unikalne zaadresowanie określonych sekcji dokumentu, takich jak akapity lub tabele. Jaki jest najlepszy sposób jednoznacznej identyfikacji elementów w dokumencie? Dzięki., Matt Sharpe.

Author: Matt Sharpe, 2009-09-01

4 answers

Jak zbudowany jest Twój szablon? Czy używa bazowego schematu XML załadowanego jako część *.docx? A może używasz kontrolek zawartości poza wstążką programisty, w którym to przypadku każda kontrolka jest jednoznacznie identyfikowana przez daną nazwę tagu? Oba te podejścia ułatwiłyby identyfikację niektórych sekcji dokumentu, ponieważ można było kontrolować, gdzie znajdują się tabele lub akapity.

Warto również rozważyć użycie Open XML SDK 2.0 (używa.NET 3.5). Zawiera poręczny Narzędzie Document Reflector, które pozwala otworzyć i sprawdzić dowolny otwarty dokument XML i pokazuje, jak wygenerować kod dla dowolnego elementu, który klikniesz.

Poza tym, aby dowiedzieć się więcej o kontroli treści, możesz sprawdzić te posty:

 11
Author: Ahmad Mageed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-28 21:56:53

Czy Można używać zmiennych/pól dokumentu? Po prostu przejdź do Wstaw- > szybkie części- > pola - > zmienna Doc, wprowadź nazwę zmiennej.

Przykład: http://www.codeproject.com/KB/office/Fill_Mergefields.aspx

Możesz również użyć wartości tekstu zastępczego, takich jak " # # insert_first_name##", a następnie wyszukać i zastąpić je zmienne.

Przykład: http://geekswithblogs.net/DanBedassa/archive/2009/01/16/dynamically-generating-word-2007-.docx-documents-using-.net.aspx

 3
Author: Jim W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-02 00:03:47

Myślę, że szukasz albo zakładek, albo kontrolek zawartości (na karcie programista wstążki, przykład kodu tutaj )
W tym samym celu użyłem nazwanych zakresów w Excelu.

 3
Author: foson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-02 15:35:50

Istnieje kilka opcji, aby to zrobić.

Stworzyłem prostą bibliotekę open-source, która zastąpi znaczniki wartościami.

Na przykład Hi {name} z data={name:"John"} zostanie zastąpiony przez Hi John.

Oto jest : https://github.com/edi9999/docxtemplater

Demo: http://javascript-ninja.fr/docxgenjs/examples/demo.html

 1
Author: edi9999,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-22 14:24:28