이 작업은 .NET을 사용하는 Word 문서의 특정 키워드를 바꿀 작업입니다. 원본 서식 및 문서 구조를 유지하는 데 가장 빠르고 신뢰할 수있는 방법은 무엇입니까?Word 문서에서 텍스트를 프로그래밍 방식으로 가장 빨리 바꾸는 방법
답변
단어가 설치되어 있다면 꽤 사소합니다.
GAC에서 Word 문서 어셈블리를 참조합니다. 단어 문서를로드하고 그 안에있는 데이터를 바꿀 수 있습니다.
이것은 클라이언트 이름 등을 입력하여 워드 문서를 인쇄하는 앱에서 가져온 것입니다. (잘라 붙인 섹션)
public void ReplaceWordDoc(ref Document doc, object data)
{
object missing = Missing.Value;
List<ReplacerSearch> search = GetSearchList(data);
foreach (var searchItem in search)
{
foreach (Range tmpRange in ((Document)doc).StoryRanges)
{
// Set the text to find and replace
tmpRange.Find.Text = searchItem.Find;
tmpRange.Find.Replacement.Text = searchItem.Replace;
// Set the Find.Wrap property to continue (so it doesn't
// prompt the user or stop when it hits the end of
// the section)
tmpRange.Find.Wrap = WdFindWrap.wdFindContinue;
// Declare an object to pass as a parameter that sets
// the Replace parameter to the "wdReplaceAll" enum
object replaceAll = WdReplace.wdReplaceAll;
// Execute the Find and Replace -- notice that the
// 11th parameter is the "replaceAll" enum object
tmpRange.Find.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref replaceAll,
ref missing, ref missing, ref missing, ref missing);
}
}
}
^이 부분은 찾기/바꾸기를 수행합니다. ReplacerSearch (와우 나쁜 이름) 목록은 Find, Replace의 두 가지 속성입니다. Find는 찾을 텍스트이고, Replace는 바꿀 텍스트입니다.
다음 코드는 지정된 파일 이름 (경로/이름)을 기반으로 word 인스턴스를 만들고 문서를 열고 대체 작업을 수행 한 다음 저장하거나 인쇄 할 수 있습니다.
object fileName = string.Empty,
trueValue = true,
missing = Missing.Value,
falseValue = false;
var app = new ApplicationClass();
var doc = new Document();
try
{
doc = app.Documents.AddOld(ref fileName, ref missing);
//doc = app.Documents.Add(ref fileName, ref missing, ref missing, ref missing);
// Loops through the StoryRanges (sections of the Word doc)
ReplaceWordDoc(ref doc, item);
//Save or print...
}
catch (Exception ex)
{
Helpers.Logger.WriteToEventLog(ex.Message, EventLogEntryType.Error);
}
finally
{
if (doc != null)
{
doc.Close(ref falseValue, ref missing, ref missing);
}
}
if (app != null)
{
app.Application.Quit(ref falseValue, ref missing, ref missing);
}
희망이 있습니다.
그것은 일을하고 비교적 빨리 작동합니다. – SharpAffair
새로운 Word 파일은 기본적으로 XML 문서입니다. Python과 같은 언어로 일반 파일로 열 수 있으며 바꿀 용어를 검색 할 수 있습니다. 일단 파일을 찾으면 파일을 저장하고 저장하는 것입니다.
아마도 XML 문서에 맞게 조정 된 간단한 방법 일 수도 있지만 문자열 라이브러리를 사용하면이 작업을 수행 할 수 있습니다.
편집 : 동일한 방법론이 .NET에서이를 수행하기 위해 작동해야합니다. 이제 막 태그를 발견했습니다.
기본 형식은 여전히 바이너리입니다. –
OpenXML SDK가 가능성이 높습니다. .net, 상당히 사용하기 쉽다. 유일한 문제는 "찾을 단어"가 일관성없는 서식을 지정하는 경우 첫 단어 BOLD 및 나머지 일반 단어로 말하면 "단어"가 단일 문자열로 나타나지 않는다는 것입니다. xml은 RUN 객체로 나뉘어집니다. xml을 적절히 구문 분석하면됩니다. 이것은 작은 일이 아닙니다. .net을 사용하여 찾기 및 바꾸기를 자동화하는 것이 가장 신속하게 구현 될 수 있으며 적절한 성능이 있어야합니다. Word의 FIND REPLACE는 훌륭하지는 않지만 확실히 좋습니다. – DarinH
MS Word의 Mail Merge
기능을 사용하면이 용도로 설계되었습니다.
좀 보시고 http://support.microsoft.com/kb/301659
- 1. 전체 Word 문서에서 프로그래밍 방식으로 찾아 바꾸는 방법
- 2. 편지 병합 된 Word 문서에서 MergeField 값을 프로그래밍 방식으로 검색합니다.
- 3. Word 2007 문서에서 매크로 (VBA) 코드를 프로그래밍 방식으로 추출
- 4. Word Automation Services를 프로그래밍 방식으로 실행하는 방법?
- 5. 프로그래밍 방식으로 UIView에 텍스트를 추가하는 방법
- 6. 프로그래밍 방식으로 표시되는 텍스트를 UITableViewCell에 표시하는 방법
- 7. PDF 문서에서 텍스트를 추출하는 방법
- 8. 프로그래밍 방식으로 PDF의 텍스트를 대체
- 9. JavaScript를 사용하여 텍스트를 바꾸는 방법?
- 10. Word 문서에서 RTF/HTML 텍스트를 추출하는 방법은 무엇입니까?
- 11. Python을 사용하여 Word 문서에서 텍스트를 구문 분석하는 방법은 무엇입니까?
- 12. 프로그래밍 방식으로 기존 문서에 Word 문서 삽입 (Word 2007)
- 13. ASP.NET에서 프로그래밍 방식으로 Word 2007 문서를 Word 2003으로 변환
- 14. Word 파일을 그림으로 프로그래밍 방식으로 저장
- 15. Word 문서의 이미지 크기를 프로그래밍 방식으로 변경하기
- 16. 읽을 수있는 작은 텍스트를 빨리 그리는 방법
- 17. 프로그래밍 방식으로 Microsoft Word 문서에 주석을 삽입하는 방법?
- 18. iPad - 프로그래밍 방식으로 버튼에 텍스트를 설정하십시오.
- 19. 어떻게 프로그래밍 방식으로 C#을 사용하여 Word 문서에서 행을 삭제할 수 있습니까?
- 20. Word 문서에서 VBA 매크로에 프로그래밍 방식으로 디지털 서명을 추가하는 방법이 있습니까?
- 21. COM/자동화를 사용하지 않고 Word 문서에서 텍스트를 추출하는 가장 좋은 방법은 무엇입니까?
- 22. MS Word 문서에서 데이터베이스를 만드는 가장 좋은 방법은 무엇입니까?
- 23. Word 문서의 텍스트를 머리글로 대체
- 24. 프로그래밍 방식으로 페이지 수를 리눅스에서 Microsoft Word 문서로 계산
- 25. Word 편지 병합 데이터 소스를 프로그래밍 방식으로 검사
- 26. pdf 파일에서 프로그래밍 방식으로 텍스트를 itextsharp로 바꿉니다.
- 27. forms.CharField 텍스트를 프로그래밍 방식으로 어떻게 설정합니까?
- 28. viewDidLoad()에서 UILabel의 텍스트를 프로그래밍 방식으로 변경하십시오.
- 29. UITextView에서 프로그래밍 방식으로 텍스트를 선택할 수 있습니까?
- 30. 프로그래밍 방식으로 NSTextField의 텍스트를 변경 하시겠습니까?
.NET이어야합니까? Word에는이를 수행 할 수있는 완전한 기능의 매크로 언어 (Visual Basic for Applications)가 있습니다. VBA에서 매크로를 기록 할 수도 있습니다. 이것을 mailmerge 기능 및 작업 완료와 결합하십시오. .NET을 실제로 사용해야하는 경우 VBA를 .NET 및 OLE 자동화로 손쉽게 변환 할 수 있습니다. 또는 실제로 Word를 설치하지 않고이 작업을 수행해야합니까? 오. "가장 빠른"무엇입니까? 가장 빨리 구현할 수 있습니까? 단일 문서에서 가장 빠른 성능? 여러 문서에서 가장 빠른 성능? –