2011-05-10 2 views
2

Word 문서를로드하고 자리 표시 자 텍스트 (예 : "< DETAILS>")를 찾고 형식의 텍스트를 RTF 컨트롤에서 가져온 C# .NET 앱이 있습니다. 이 최종 문서는 Outlook에서 전자 메일 메시지로 열리고 보낼 준비가됩니다..NET을 사용하여 Word 문서의 서식있는 텍스트로 자리 표시자를 바꾸는 방법은 무엇입니까?

RTF 컨트롤에서 Word 문서로 서식을 지정하는 방법을 제외하고는이 모든 기능이 작동합니다. RTF 텍스트에는 굵게, 점 및 기타 서식이 포함되어 있으며 텍스트 길이가 256자를 초과하여 Word interop 찾기 및 바꾸기 메서드가 작동하지 않습니다.

필자는 Find 메서드를 사용하여 원하는 텍스트 (256 문자 제한을 피함)를 설정할 수 있지만, 필자의 경우에는 서식을 지정하는 방법을 이해할 수 없습니다. 작업을 수행하는 것처럼 보이는 FormattedText 멤버가 있지만, 내가 할당 한 항목 (심지어 자체에 할당하는 경우)에 관계없이 오류가 발생하므로 읽기 전용으로 간주됩니다.

하지만 RTF 컨트롤은 일반 텍스트 나 서식이없는 일반 텍스트 또는 RTF 코드가 포함 된 문자열을 제공 할 수있는 것만으로도 문제는 아닙니다. RTF 코드를 해석하는 데는 Word 기능이없는 것 같기 때문에 지금 내가 할 수있는 것은 < DETAILS> 자리 표시자를 이해하기 어려운 일부 RTF 시퀀스로 대체하는 것입니다.

서식있는 텍스트를 XML 조각으로 삽입 할 수있는 OpenXML API를 조사해 왔지만 삽입 할 XML 조각으로 RTF 컨트롤의 내용을 가져올 수있는 방법을 알 수 없습니다. .

누구나 달성 할 수있는 방법을 알고 있습니까?

답변

1

이 문제를 해결해야합니다
How to paste a Rich Text Format string into Word with Visual Basic Automation

이 솔루션은 클립 보드에 RTF-코드를 삽입하고 RTF 포맷임을 지정하는 것입니다. 그런 다음 Wordapp.Selection.Paste를 사용하여 내용을 단어에 붙여 넣습니다. Word는 RTF를 처리하는 방법을 알고 있습니다 (rtf-documents를 열고 클립 보드에서 RTF 데이터를 읽을 수 있습니다).

이 방법을 사용하는 경우 작업 전에 클립 보드 콘텐츠를 저장하고 클립 보드 콘텐츠를 복원해야합니다. 사용자가 예고없이 프로그램에서 클립 보드 콘텐츠를 변경할 때처럼 사용하지 마십시오. (이 방법은 클립 보드의 RTF 부분 만 변경하므로 클립 보드는 여러 형식을 저장할 수 있으므로 모든 형식을 저장/복원하지 않아도됩니다.)

+0

감사합니다. 나는 또한 같은 결론에 도달했지만 그것의 dodginess을 좋아하지 않았지만, 나는 클립 보드 내용을 저장하고 복원하는 것을 생각하지 않았다. 그것은 훨씬 더 좋을 것이다. 불행하게도 코드를 처음 실행하면 붙여 넣기는하지 않지만 후속 실행은 올바르게 작동합니다. 나는 당신이 그런 못생긴 해킹에서 기대할 수있는 최선이라고 생각한다 ;-) – Malvineous

관련 문제