2015-01-27 2 views
2

사용자 입력 (서식있는 텍스트 편집기 포함)의 내용을 Word 문서에 삽입해야하는 응용 프로그램을 개발 중입니다. 이를 위해 DocX 라이브러리 (http://docx.codeplex.com/)를 사용합니다. 라이브러리는 특정 작업을 수행하는 데 아주 깔끔한 방법을 제공하며 빈 문서에 내용을 삽입하기 만하면됩니다.DocX - 단락이나 목록의 색인을 얻는 방법?

그러나 내가 삽입해야하는 문서는 이미 일부 콘텐츠가있는 템플릿입니다. 내가 필요한 것은 문서에이 내용 뒤에 사용자 입력을 삽입 할 수 있어야한다는 것입니다. 이와 같이 :

일부 기본 내용은 여기에 있습니다.

[내 콘텐츠가 필요했습니다]

다른 기본 콘텐츠가 여기에 있습니다.

DOCX 문서에 단락과 목록을 삽입하는 방법이 있습니다

using(var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(PathToTestFile)) 
{ 
    var doc = DocX.Load(stream); //will have two paragraphs 
    var p = doc.InsertParagraph(); //adds a new, empty paragraph to the end of the document 
    var list = doc.AddList(listType: ListItemType.Numbered); //adds a list 
    doc.AddListItem(list, "Test1", listType: ListItemType.Numbered); //adds a listitem to the list 
    doc.InsertList(list); //adds a list to the end of the document 
} 

단락도 테이블이나 단락 등 특정 객체를 삽입하기위한 방법을 갖는 하나 OG 전에 자체 후 :

//given a Paragraph p and another Paragraph newP: 
p.InsertParagraphAfterSelf(newP); 

목록에는 동일한 방법이 있지만 둘 다 다른 목록과 동일하게 수행 할 수있는 옵션이 없습니다 (즉, 위의 예를 목록과 동일하게 수행 할 수 없습니다). 이를 위해 필자는 문서에서 단락이나 목록의 색인이 필요합니다. 이렇게하면 인덱스를 매개 변수로 사용하는 삽입 메서드를 사용할 수 있습니다.

// A lookup for the Paragraphs in this document. 
    internal Dictionary<int, Paragraph> paragraphLookup = new Dictionary<int, Paragraph>(); 

이 사전 내부에, I가 액세스 할 수 없음을 의미 :

DOCX 클래스이 (: http://docx.codeplex.com/SourceControl/latest#DocX/DocX.cs DOCX 소스 코드로부터 추출)를 갖는다. 나는 내 인생에서 인덱스를 찾는 다른 방법을 찾을 수 없지만이 인덱스가 필요한 메소드가 있기 때문에 방법이되어야합니다. 누구도 같은 문제가 발생 했습니까? 해결책은 많이 appriciated 것입니다!

+0

색인을 찾으려는 단락에 태그가 있습니까? – Phillip

+0

아니요, 특정 배열 인덱스에 무언가를 삽입하는 것처럼 문서의 지정된 인덱스에 내용을 삽입 할 수있는 방법을 찾고있었습니다. 그러나, 나는 머리말과 꼬리말에 내 "기본"콘텐츠를 넣어, 따라서 내 초기 문제를 해결. 그럼에도 불구하고 인덱스 매개 변수를 받아들이는 "InsertSomething"메소드를 사용하는 방법에 대한 초기 질문은 대답이 없습니다 .. –

+0

'p = p.paragraphs [0];'단락을 사용하여 인덱스를 얻은 다음'p. InsertParagraphAfterSelf (newP);'. 'doc.Paragraphs'는'Paragraphs' 문서 목록입니다. 나는 아직도 당신이 성취하려는 것을 확신하지 못합니다. 여러 단락 뒤에 단락을 삽입 하시겠습니까? 문제를 해결할 수있어서 기쁩니다. – Phillip

답변

1

Word에서 템플릿 문서를 편집하고 내용을 추가 할 위치에 책갈피를 삽입하는 것이 가장 쉬운 방법입니다. 그런 다음 다음을 사용할 수 있습니다.

document.InsertAtBookmark("Content to be added", "bookmarkname"); 

내용을 삽입 할 수 있습니다.

+1

네, 이것도 가능합니다. 나는 실제로 북마크를 사용하여 문서 머리글의 다른 위치에 내용을 삽입했습니다. 헤더를 사용하면 단락을 추가하여 컨텐츠를 삽입 할 수있었습니다. 그러나 헤더가 사용자의 요구를 충족시키지 못하면 북마크가 유용 할 것입니다. 그래서 대답으로 표시! –

관련 문제