2012-11-02 5 views
2

Word 템플릿에서 인쇄 인보이스를 자동화하고 싶습니다. 나는 논리가 무너 졌다고 생각하지만, 그것을 코딩하는 올바른 방법을 모른다.병합 필드에 데이터를 추가하는 방법

date_issued, month_covered, invoiceNo, tuition, lunchFee, discount, studentNo, studentName, amountDue : 그것은 도움이 될 경우, 여기 내 템플릿이 병합 필드는 여기에 내 현재 코드

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; 

입니다 , amountPaid, balance, penalty, status

이제 어떻게해야합니까? 내 응용 프로그램을 사용하여 템플릿에서 모든 속성을 가져 오는 문서에 이브가 있습니까?

+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

예, 인쇄 할 데이터가 포함되도록 mergefields를 추가/변경하는 방법을 여전히 모르겠습니다. 그래서 나는 다른 길로 갔다 –

+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 했어! 데이터를 추가하지만 모든 종류의 창을 열지 않고 문서를 저장하도록 요청하려면 어떻게해야합니까? 템플릿 파일 만 유지하면서 생성 된 모든 문서를 삭제하고 싶습니다. –

관련 문제