2017-01-19 9 views
0

私は多くのページを含む単語文書を持っています。これらのページの1つに、他のコンテンツの代わりにプレースホルダが含まれています。そのプレースホルダを書式設定を失うことなく別のdocファイルに置き換えたいと考えています。置き換えられるこのdocファイルは、多くのページを持つことができます。このプレースホルダーをプログラムでこの文書ファイルに置き換えるにはどうすればよいですか?多くを検索しましたが、プレースホルダーを置き換えるdocファイルを挿入するオプションが見つかりませんでした。プレースホルダーの代わりに文書ファイルを挿入する

またはどのように我々は、docの内容を挿入して、コピーされたコンテンツ

でプレースホルダを置き換えることをコピーすることができ、私はコードの下here【選択は、そのポストからであるポストを見つけました。もし代わりに、「皆さん、こんにちは」の場合

using (MemoryStream mem = new MemoryStream()) 
{ 
mem.Write(documentByteArray, 0, (int)documentByteArray.Length); 
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true)) 
{ 
    string docText = null; 
    using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream())) 
    { 
     docText = sr.ReadToEnd(); 
    } 

    Regex regexText = new Regex("Hello world!"); 
    docText = regexText.Replace(docText, "Hi Everyone!"); 

    using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create))) 
    { 
     sw.Write(docText); 
    } 
} 

}

:ライブラリを使用すると、documentByteArrayは、データベースから取得したドキュメントのバイトコンテンツであることを考慮すると、Word文書からテキストを交換するには、次の操作を行うことができ 我々は

byte[] binarydata = File.ReadAllBytes(filepaths); 

どのように我々はプログラムを変更することができますバイトの配列であるbinarydata、と交換してください?

+0

これはASP.Netコンテンツプレースホルダです。単語の文書? –

+0

その単語の文書のプレースホルダー – Binto

+0

私が現在使用している解決策があり、あなたのコードを手に入れようとしているので、私は数分を与えます。 –

答えて

0

まず、Novacode.DocxというNugetパッケージを入手する必要があります。これは、ここ数年で最高のドキュメント作成者と編集者であることが判明したものです。

using Novacode.Docx; 

void Main() 
{ 
    var doc = DocX.Load(@"c:\temp\existingDoc.docx"); 
    var docToAdd = DocX.Load(@"c:\temp\docToAdd.docx"); 

    doc.InsertDocument(docToAdd, true); //version 1.0.0.22  
    doc.InsertDocument(docToAdd); //version 1.0.0.19 
} 

これは、あなたが後でしていることの最も単純で基本的な実装ですが、これは機能します。

は、何のために開始するのに最適な場所になります

https://docx.codeplex.com/

または

http://cathalscorner.blogspot.co.uk/

この時のドキュメントを見てみましょう。また、1.0.0.22にいくつかの書式設定の問題があるため、バージョン1.0.0.19を使用する場合は、これを使用することをお勧めします。

関連する問題