2011-11-29 6 views
0

문제가 있습니다.C#으로 도트 템플릿 조작

고객이 제공 한 .dotx 파일을 가지고 있습니다. 여기에는 Word에서 개발자 모드에 추가 된 다양한 종류의 필드가 포함되어 있습니다.

이 도트를 사용하여 값으로 채울 수 있기를 원합니다.

C# 코드에서 어떻게합니까?

+0

함께 일할 수있는 것에 대한 제한이 있습니까? 예를 들어 프로그램을 실행할 서버/클라이언트에 Office를 설치 하시겠습니까? –

+0

음, 나는 서버/클라이언트에 사무실 등을 설치할 수 있습니다. 그러나 중요한 것은 데이터가 데이터베이스 또는 웹 폼에서 온다는 것입니다. 따라서 완성 된 문서를 생성하려면 코드에서 dotx를 조작 할 수 있어야합니다. – Wondermoose

+0

@Bali C, 지적 해 주셔서 고맙습니다. – Wondermoose

답변

3

Microsoft OpemXML SDK를 사용하면 C#을 사용하여 docx/dotx 파일을 조작 할 수 있습니다. here에서 Microsoft OpenXML SDK를 다운로드 할 수 있습니다.

먼저 dotx 파일의 복사본을 만들어야합니다. 그런 다음 템플릿에서 필드/컨텐츠 소유자를 찾습니다.

// First, create a copy of your template. 
File.Copy(@"c:\temp\mytemplate.dotx", @"c:\temp\test.docx", true); 

using (WordprocessingDocument newdoc = WordprocessingDocument.Open(@"c:\temp\test.docx", true)) 
{ 
    // Change document type (dotx->docx) 
    newdoc.ChangeDocumentType(WordprocessingDocumentType.Document); 

    // Find all structured document tags 
    IEnumerable<SdtContentRun> placeHolders = newdoc.MainDocumentPart.RootElement.Descendants<SdtContentRun>(); 

    foreach (var cp in placeHolders) 
    { 
    var r = cp.Descendants<Run>().FirstOrDefault(); 

    r.RemoveAllChildren(); // Remove children 
    r.AppendChild<Text>(new Text("my text")); // add new content 
    }   
} 

예는 상술 한 매우 간단한 예이다

여기 (리치 텍스트 박스 콘텐츠 필드 간단한 워드 템플릿을 사용하는) 작은 예이다. 단어 템플릿 구조에 맞춰야합니다.

희망. 도움이됩니다.

+1

나는 어제 이것을 발견했다. 그리고 나는 그것이 내가 가지고있는 것에 꽤 멋지게 일했다. http://midnightprogrammer.net/post/Word-Automation-in-C.aspx 하지만 이것도 보게 될 것입니다. 더 잘 작동 할 것입니다. 감사! – Wondermoose