2009-08-05 26 views
8

Word 2007(docx)ドキュメントを開き、適切なCustomXmlPartを更新するコードがあります。 CustomXmlPart)、これを新しいファイルとして保存する方法を理解できません。確かにそれは難しいことではありません!テンプレートから生成されたOpenXMLドキュメント(Word)の保存

私の現在の考えは、テンプレートを開いて、空の新しいドキュメントにファイルをコピーする必要があるということです。ファイルが見つかると、CustomXmlPartが更新されます。 私に古風な電話をかけてください。

なぜWordprocessingDocument.SaveAs(filename)を実行できないのですか。 ...?

私はここに簡単なものがないと教えてください。

ありがとうございます。

+0

私は、OpenXmlがeaiser - pfftを作ると考えていました。 時間を置いて上記を離しておくと、私はリストの次のタスクを見ていました - 一握りのdocxファイルを1つのdocxに埋め込む(質問しないでください!)と私はただ頭痛を抱えています! – DilbertDave

+0

*仕様に基づいてxmlを手作りするよりも簡単になります;) – JoeBrockhaus

答えて

14

あなたはOpenXml SDKについて言及していますか?残念ながら、OpenXml SDK 2.0以降、SaveAsメソッドはありません。

  1. テンプレートファイルの一時的なコピーを作成し、必要な名前を付けてください。
  2. 上記のファイルでOpenXmlの変更を行います。
  3. メインのコンテンツには。myWordDocument.MainDocumentPart.Document.Save()メソッド、または特定のヘッダーにはsomeHeaderPart.Header.Save()メソッドを使用して、適切なセクションを保存します。
+6

これは、私がやったことのほとんどです - 私にはちょっとしたことがあるようです。ドキュメントを開いてそれを変更すると、更新されたバージョンを別の名前で保存したがっている可能性があります。 – DilbertDave

+1

ファイルをMemoryStreamsに読み込んでも同じことが達成できますか?私はファイルのコピーを作成しないようにすることを意味します。 –

+0

@PabloRomeoそれは可能かもしれないと思いますが、私がOpenXmlを使って作業していたときにやり直したアプローチではありません。おそらく 'MemoryStream'を使って作業し、最後に目的のファイル名に保存することができます。これらのリンクは、[メモリ内のオープンXMLドキュメントを使用する](http://msdn.microsoft.com/en-us/library/office/ee945362%28v=office.11​​%29.aspx)および[ OpenXMLとMemoryStreams?](http://amykinsgardiner.blogspot.com/2011/02/trouble-with-openxml-and-memorystreams.html) –

0

実際、少なくともOpenXml SDK 2.5には対応しています。ただし、XMLの変更は実際にファイルに反映されるため、元のファイルのコピーを処理する必要があります。 WordprocessingDocumentインスタンスとして

public void Load(string pathToDocx) 
    { 
     _tempFilePath = CloneFileInTemp(pathToDocx); 
     _document = WordprocessingDocument.Open(_tempFilePath, true); 
     _documentElement = _document.MainDocumentPart.Document; 
    }  

    public void Save(string pathToDocx) 
    { 
     using(FileStream fileStream = new FileStream(pathToDocx, FileMode.Create)) 
     { 
      _document.MainDocumentPart.Document.Save(fileStream); 
     } 
    } 

有する「_Document」:ここでは、私のカスタムクラスのメソッドの読み込みと保存を持っている(いくつかの検証コード、...を除去した後)。

関連する問題