Wordドキュメントのプレースホルダーをc#に置き換えます
-
05-07-2019 - |
質問
Word(.docx)形式のテンプレートがあり、このテンプレート内のいくつかのプレースホルダーを自分のデータに置き換えたいのですが、このプロジェクトに適切なクラスがどこで見つかるか知っていますか?名前空間を知っているといいですね。 comクラスよりもdocx形式(xml)のWordドキュメントを処理するための新しいクラスはありますか?あなたのすべての答えをありがとう、誰かが私の問題で私を助けてくれることを願っています。
挨拶
セバスチャン
解決
新しいオフィス形式(docx、xlsxなど)は、xmlファイルのコレクションを含むzipファイルです。それを念頭に置いて、いくつかのアプローチがあります。
-
docxファイルを解凍し、トークンの検索と置換を行ってから、zipでバックアップします。
openxmldeveloper.org には、この種のWebサイトがあります。また、SDKのベータバージョン2が既に出荷されていることに注意してください。
他のヒント
Eric Whiteは DocXファイルに埋め込まれたソーススニペットを検証するためのプログラムの詳細を記載したブログ記事。その記事だけでなく、 Office Open XMLおよびC#。
これを使用しました:
IEnumerable test2 = body.Elements()の要素から where element.InnerText.Contains(" sdt") 要素を選択してください。
ところで、xmlを使用して、すべてのsdt-nodesを見つけるこのソリューションを見つけました
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", wordmlNamespace);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(doc.MainDocumentPart.GetStream());
XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager);
動作しますが、Open XML Format SDK 2.0ではこれを行う機会がありませんか?