2015-04-29 95 views
0

這是我的問題:我試圖執行郵件合併使用OpenXmlC#。爲此,我必須創建一個與我的數據集中的行數相同的Word文檔(我的數據集是一個CSV文件)。OpenXml,Word和C#

我創建了一個新文檔,並且試圖在本文檔的每個頁面上覆制我的模板。不幸的是,只有第一頁有正確的格式(我的模板被複制)。要複製,我使用InnerXml,我試圖從我的模板複製到我的新單詞文檔的每個頁面。

我知道我的問題來自我的指示,但我不知道如何解決它。

這裏是我的代碼:

string fileName = @"MyTemplate"; 
using (WordprocessingDocument pkgDoc = WordprocessingDocument.Open(fileName, true)) 
{ 
    pkgDoc.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document); 
    var test = (pkgDoc.MainDocumentPart.RootElement.InnerXml); 

    string filenamecible = @"@MyNewWordDocument"; 

    using (WordprocessingDocument package = WordprocessingDocument.Create(filenamecible, WordprocessingDocumentType.Document)) 
    { 
     MainDocumentPart mainPart = package.AddMainDocumentPart(); 

     //Create DOM tree for simple document. 

     mainPart.Document = new Document(); 

     for (int i = 0; i < csvline.Count; i++) 
     { 
      mainPart.RootElement.InnerXml = test; 
      var x = new Break() { Type = BreakValues.Page };; 
      mainPart.Document.Append(x); 
      mainPart.Document.Save(); 
     } 

     package.MainDocumentPart.Document.Save(); 
    } 

} 

回答

0

嗯,我找到了解決辦法,如果有人得到了同樣的問題,這裏是代碼:

string fileName = @"MyTemplate"; 
using (WordprocessingDocument pkgDoc = WordprocessingDocument.Open(fileName, true)) 
{ 
    pkgDoc.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document); 
    var test = (pkgDoc.MainDocumentPart.RootElement.InnerXml); 

string filenamecible = @"@MyNewWordDocument"; 

using (WordprocessingDocument package = WordprocessingDocument.Create(filenamecible, WordprocessingDocumentType.Document)) 
{ 
    MainDocumentPart mainPart = package.AddMainDocumentPart(); 

    //Create DOM tree for simple document. 

    mainPart.Document = new Document(); 

    for (int i = 0; i < csvline.Count; i++) 
    { 
     var x = new Break() { Type = BreakValues.Page }; 
     Body b = new Body(test); 
     mainPart.Document.Append(b); 
     mainPart.Document.Append(x); 
     mainPart.Document.Save(); 
    } 

    package.MainDocumentPart.Document.Save(); 
} 

} 
+0

什麼問題,該如何解決?你也沒有提到。你還應該使用描述性標題。 –

+0

我在段落中講過。我有一個CSV文件,我想創建一個Word文檔,其中包含與CSV文件中的行數相同的頁面數。此外,因爲我正在做一個mailmerge函數,所以我不得不在新文檔的每個頁面中複製我的模板Word。 我的單詞模板是「你好先生X,你出生在X ...」的想法是創建一個新的Word文檔,其中包含「你好先生X,你出生在X」每頁。頁面的數量與csv文件行相同。 – VERYNET

相關問題