2016-11-16 2 views
0

저는 태그가있는 일반 텍스트 콘텐트 컨트롤을 배치 한 Word 문서로 데이터를 출력해야하는 프로그램을 만들고 있습니다. 기본적으로,이 방법은 구조 내에서 관계없이 위치, 지정된 태그로 모두 일반 텍스트 콘텐츠 컨트롤을 기입 할 수 있어야한다 .docx 파일 내에서 일반 텍스트 콘텐트 컨트롤을 찾고 OpenXML SDK를 사용하여 텍스트를 바꿀 수 있습니까?

public static void SetContentControlText(WordprocessingDocument document, string contentControlTag, string text) 
{ 
    // TODO: Implement this method... 
} 

(사용의 C#) 다음과 같은 방법을 작성 후 해요 (즉, 문서의 본문과 내부 테이블 등에서 내용 컨트롤을 찾을 수 있어야합니다.).

미리 감사드립니다.

답변

0

일부 주위 파고 일 후, 난/다음 용액을 적응 발견 ...

public static int SetContentControlText(
    this WordprocessingDocument document, 
    Dictionary<string, string> values) 
{ 
    if (document == null) throw new ArgumentNullException("document"); 
    if (values == null) throw new ArgumentNullException("values"); 

    int count = 0; 

    foreach (SdtElement sdtElement in document.MainDocumentPart.Document.Descendants<SdtElement>()) 
    { 
     string tag = sdtElement.SdtProperties.Descendants<Tag>().First().Val; 
     if ((tag != null) && values.ContainsKey(tag)) 
     { 
      sdtElement.Descendants<Text>().First().Text = values[tag] ?? string.Empty; 
      sdtElement.Descendants<Text>().Skip(1).ToList().ForEach(t => t.Remove()); 

      count++; 
     } 
    } 

    return count; 
} 

에있어서, 상기 문서 및 태그/값 쌍의 사전에 걸리고, 콘텐츠 제어의 수를 반환 설정되었습니다!