2011-09-22 3 views
4

나는 보고서 작성기를 사용하여 보고서의 시작을 한 단어로 만듭니다. Word는 사용자가 보고서를 계속 진행할 수 있도록 열어 둡니다. 보고서 작성기는 단락으로 사용되는 데이터베이스에서 rtf를 가져옵니다. 각 rtf에 대해 단락이 문서 내에 만들어지고 rtf가 추가됩니다.C# Word Interop, 클립 보드를 단락으로 붙여 넣기

내가 읽은 것은 단어 문서에 rtf를 삽입하려면 클립 보드에 넣고 클립 보드에서 단어로 붙여 넣는 것입니다. 이것이 실제로 원하는 단락에 넣지 않는다면 괜찮습니다. paste 메서드가 호출되면 단락 범위에 rtf가 실제로 배치되지 않고 단락이 시작되는 곳에 붙여 넣기 만하면됩니다. 그것은 단락을 덮어 쓰지 않습니다, 단락은 내가 붙여 넣은 rtf 블록 아래에 여전히 존재합니다. 단락 기호를 조정하기 위해 하나씩 범위를 이동하면 단락 아래에 붙여 넣기 만하면됩니다. 필자가 생각하기에 Paste() 메서드 대신 Insert() 메서드가 필요합니다. 그러나이 방법을 알지 못하고 어떤 방법으로도 정보를 찾을 수 없습니다. 빌딩 블록에서 삽입하거나 일반 텍스트를 삽입 할 수 있지만 여기에 삽입되는 것은 서식이 지정된 텍스트 여야합니다. 형식이 지정된 텍스트에는 다른 사용자가 만드는 스타일 등이 혼합되어 있습니다.

다음과 같이 클립 보드 및 붙여 넣기에 복사하는 코드는 다음과 같습니다

Clipboard.SetText(richTextBox1.Rtf, TextDataFormat.Rtf); 
oPara[i].Range.Paste(); 

을 나는 다음으로, 당신은 단락 서식을 유지 문단에 빌딩 블록을 삽입 할 수 있습니다 알고

tTemplate.BuildingBlockEntries.Item(foundList[i]).Insert(oPara[i].Range.FormattedText); 

하지만 내 시나리오에서이 목표를 달성하는 방법을 찾을 수 없습니다.

내가 단락에 삽입하고 싶은 이유는 형식의 특정 부분을 편집 및 페이지 등

내가 작성하는 현재 가지고있는 코드에서 줄 바꿈하지 않는 것을 보장하는 것입니다 단락이 결과는 RTF는 어디에 t 붙여있다

oPara[0].Range.Select(); //To see first paragraph 

광고와 정확히 시각 어디에

Word.Paragraph[] oPara = new Word.Paragraph[foundList.Count]; 

for (int i = 0; i < foundList.Count; i++) 
{ 
    oPara[i] = oDoc.Content.Paragraphs.Add(); 
    Clipboard.SetText(foundList[i].Paragraph, TextDataFormat.Rtf); 
    oPara[i].Range.InsertParagraphAfter(); 
    oPara[i].Range.Paste(); 
    oPara[i].KeepTogether = -1; 
    oPara[i].Range.Font.Size = 10; 
    oPara[i].Range.Font.Name = "Arial"; 
} 

I 체크 표시 : 삽입 및이게 그는 단락이 시작되고 단락은 붙여 넣은 rtf 바로 아래에 있습니다. MS-Word에서 단락에 원하는 방식으로 rtf를 삽입하는 방법은 무엇입니까?

편집 : 붕괴 메소드를 호출하는 것은 내가

+0

견적 : '범위 내용을 바꾸지 않으려면이 방법을 사용하기 전에 축소 방법을 사용하십시오 .' –

답변

2

이 솔루션을 찾을 일이하고 싶은 일을하지 않고, 실제로 단락 태그 안에 붙여 않는 붙여 넣기 방법은 문제는 텍스트 서식있는 텍스트로 입력 할 때 상자에서 서식있는 텍스트 상자는 자동으로 단락 태그를 추가합니다. rtf에는 단락 태그가 있으므로 다른 단락으로 계산했습니다. 따라서 데이터베이스의 RTF에는 사용자가 아닌 리치 텍스트 상자에 의해 추가 된 단락 태그가있었습니다. 이 문제를 해결하기 위해 데이터베이스에서 가져온 rtf에서 단락 태그를 제거했습니다. 내가 끝까지 작성한 코드가있다.

관련 문제