2012-11-02 48 views
2

我想從Word模板中自動打印發票。我認爲我有邏輯,但我不知道編碼的正確方法。這裏是我當前的代碼如何將數據添加到合併字段

Selection wrdSelection; 
MailMerge wrdMailMerge; 
MailMergeFields wrdMergeFields; 
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); 
Document wrdDoc = new Document(); 
wordApp.Visible = false; 
wrdSelection = wordApp.Selection; 

object oMissing = System.Reflection.Missing.Value; 

// PUT MY EXISTING TEMPLATE FILE INTO WORD DOCUMENT 
wrdDoc = wordApp.Documents.Add(Properties.Resources.invoiceTemp,oMissing,oMissing, oMissing); 
// RETREIVE MAIL MERGE PROPERTIES FROM THE DOCUMENT IN HOPES OF UTILIZING IT 

wrdMailMerge = wrdDoc.MailMerge; 
wrdDoc.Select(); 
wrdMergeFields = wrdMailMerge.Fields; 

如果將有所幫助,這裏有我有我的模板合併域:

date_issuedmonth_coveredinvoiceNotuitionlunchFeediscountstudentNostudentNameamountDueamountPaid,balance,penalty, status

現在,我該如何添加數據,我retri前夜使用我的應用程序到文檔中獲取模板的所有屬性?

+1

看來你沒看過[參考](http://support.microsoft.com/kb/301659)我提供您的[上一個問題](http://stackoverflow.com/questions/13180654/how-to-do-a-mail-merge-in-c-sharp-using-interop-word/ 13183814#13183814)。此外,在這個問題中,您接受了一個建議您根據模板創建文檔的答案。該模板應該已經包含相關的合併域。 – Fionnuala

+0

是的,但我仍然不知道如何添加/更改合併域以包含要打印的數據。所以我去了另一條路線 –

+1

你讀過鏈接了嗎?它說,在很多其他的東西中,wrdMergeFields.Add(wrdSelection.Range,「Address」);' – Fionnuala

回答

2

以下是有關使用模板和數據文件運行的注意事項。

Word.Application _wordApp = new Word.Application(); 
Word.Document oDoc = _wordApp.Documents.Add(@"z:\docs\mergetemplate.dotx"); 
_wordApp.Visible = true; 
oDoc.MailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters; 
oDoc.MailMerge.OpenDataSource(@"Z:\Docs\new.csv", false, false, true); 
oDoc.MailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument; 
oDoc.MailMerge.Execute(false); 

新創建的合併文件是現在的活動文檔,這樣你就可以將它保存:

Word.Document oLetters = _wordApp.ActiveDocument; 
oLetters.SaveAs2(@"z:\docs\letters.docx", 
    Word.WdSaveFormat.wdFormatDocumentDefault); 
+0

我會需要將我們之前討論的文本文件重命名爲csv文件? –

+1

csv是一個文本文件。我建議你爲你的數據使用csv(逗號分隔值)。 Access的輸出看起來像'DoCmd.TransferText acExportDelim,「Table1_or_Query1」,「z:\ docs \ data.csv」,True'。在某些限制範圍內調用它並不重要,如果您願意,可以將該名稱設置爲變量。如果您想要記錄,您甚至可以按日期命名文件。 – Fionnuala

+0

我做到了Remou!它添加了數據,但是如何避免打開各種窗口並要求我保存文檔?我想放棄所有僅保留模板文件的文檔? –

相關問題