2017-07-31 10 views
1

openxmlドキュメントを動的に作成しようとしていますが、基本的にはドキュメントのセクション(テーブル、段落など)を作成するためのクラスがあり、ドキュメントを作成する別のクラスが必要です。私の場合は、doc、それを呼び出して、私の他のクラスは、だから、現時点では私はこのdocTable、docRun ...動的にopenxmlドキュメントを作成する

を持っている:段落が正しく私はちょうどそれを設定する必要が構築さ

DocRun projectNameTitle = new DocRun(); 
    Run projectNameTxt = disclaimerDescription.createParagraph(document.projectName, SUBTITLECOLOR, FONTSIZESUBTITLE,FONTTYPE); 

    DocRun dateParagraph = new DocRun(); 
    Run dateTxt = disclaimerDescription.createParagraph(date, PARAGRAPHTITLECOLOR, DATEFONTSIZE, DEFAULTFONT); 

    Doc simpleDoc = new Doc(); 
    simpleDoc.CreateDoc(dateParagraph, projectNameTitle); 

を現時点ではドキュメントの本文には、docクラスが入る場所があり、渡されるパラメータはrespoである必要があります渡された順序で文書を構築するためのnsable。ここで

は、文書を作成するための私のクラスの責任がある:

using System.Web.Hosting; 

namespace openXml 
{ 
    public class Doc 
    { 
     public const String DOCUMENTSLOCATION = "~/Files"; // default documents location 
     public void CreateDoc(params object[] document) 
     { 
      var stream = new MemoryStream(); 
      using (WordprocessingDocument doc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document, true)) 
      { 
       MainDocumentPart mainPart = doc.AddMainDocumentPart(); 

       new Document(new Body()).Save(mainPart); 

       Body body = mainPart.Document.Body; 

       foreach (var docSections in document) 
       { 
        body.Append(new Paragraph(new ParagraphProperties(), 
        new Run((Run)docSections))); 
       } 

      } 
      stream.Seek(0, SeekOrigin.Begin); 
      Directory.CreateDirectory(HostingEnvironment.MapPath(DOCUMENTSLOCATION)); 
      System.IO.File.WriteAllBytes(HostingEnvironment.MapPath("~/Files/test5.docx"), stream.ToArray()); 

     } 
    } 
} 

私は実行または他の事を渡していた場合、私は知らないので、私は繰り返すことができ、どのように、ここでいくつかのトラブルを抱えていますこの例では、渡されたアイテムのリストを上書きしてこのドキュメントに追加すると、ここで何が間違っているのかわからないので、ドキュメントは作成されません:S

答えて

2

using

doc.MainDocumentPart.Document.Save(); 
doc.Close(); 
fileBytes = stream.ToArray(); 

そして、そのようなファイルを保存します。

File.WriteAllBytes(string path, fileBytes) 
+0

それは働いたが、私はそれをmainpartを渡す必要があるイメージを作成することがあるとして、私はに意味、そのmainpartをしたい場合、私は、問題を抱えていますdocクラス側では、本当に画像のmainpartパラメータが必要ですか? –

+1

別の質問としてこれを依頼してください。答えは、同じ問題にぶつかる他の人を助けるでしょう。 – Taterhead

関連する問題