Word (.docx) 形式のテンプレートがあり、このテンプレートの一部のプレースホルダーを独自のデータに置き換えたいのですが、このプロジェクトに適したクラスがどこにあるか知っていますか? 名前空間が分かればよかったです。com クラスよりも新しい、docx 形式 (xml) の Word 文書を処理するためのクラスはありますか? すべての回答に感謝します。誰かが私の問題を解決してくれることを願っています。
挨拶する
セバスチャン
Word (.docx) 形式のテンプレートがあり、このテンプレートの一部のプレースホルダーを独自のデータに置き換えたいのですが、このプロジェクトに適したクラスがどこにあるか知っていますか? 名前空間が分かればよかったです。com クラスよりも新しい、docx 形式 (xml) の Word 文書を処理するためのクラスはありますか? すべての回答に感謝します。誰かが私の問題を解決してくれることを願っています。
挨拶する
セバスチャン
新しいOffice形式(docx、xlsxなど)は、xmlファイルのコレクションを含むzipファイルです。それを念頭に置いて、いくつかのアプローチがあります。
http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=enにあるOpenXMLSDKを使用できます。
docxファイルを解凍し、トークンを検索して置換し、zipでバックアップすることができます。
openxmldeveloper.orgには、この種のことだけを目的としたWebサイトがあります。また、SDKのベータバージョン2がすでに出荷されていることにも注意してください。
Eric White は、DocX ファイルに埋め込まれたソース スニペットを検証することを目的としたプログラムを詳述したブログ記事で、まさにこの問題に触れています。その記事だけでなく、Office Open XML と C#に関する彼の連載を読むことを強くお勧めします。
私はこれを使用しました:
IEnumerable test2 = from element in body.Elements() where element.InnerText.Contains("sdt") select element;
ちなみに、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 は私にこれを行う機会を与えてくれませんか?