Java - 차이점을 얻기 위해 두 개의 Word 문서를 비교하는 방법

5707 단어 javamswordcompareapi
우리는 종종 직장에서 문서의 두 가지 버전을 얻습니다. 예를 들어 계약서의 원본 버전과 수정된 버전, 인용문 또는 사용 약관 문서입니다. 두 개의 유사한 버전을 비교하고 차이점을 찾아야 하는 것은 드문 일이 아닙니다. 이 기사에서는 Spire.Doc for Java을 사용하여 두 개의 Word 문서를 비교하고 Java에서 차이점을 얻는 방법을 소개합니다.
  • 두 문서를 비교하고 결과를 Word 문서에 저장
  • 두 문서를 비교하고 목록에서 삽입 및 삭제 반환

  • 다음은 비교할 두 Word 문서의 스크린샷입니다.



    Spire.Doc.jar를 종속성으로 추가



    Maven 프로젝트에서 작업하는 경우 다음을 사용하여 pom.xml 파일에 종속성을 포함할 수 있습니다.

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc</artifactId>
            <version>10.6.6</version>
        </dependency>
    </dependencies>
    


    maven을 사용하지 않는 경우 this location 에서 제공되는 zip 파일에서 필요한 jar 파일을 찾을 수 있습니다. 이 자습서에 제공된 샘플 코드를 실행하려면 모든 jar 파일을 애플리케이션 lib 폴더에 포함합니다.

    두 문서를 비교하고 결과를 Word 문서에 저장



    비교 결과를 Word 문서에 저장하면 삽입, 삭제 및 형식 수정을 포함하여 원본 문서의 모든 변경 사항을 볼 수 있습니다. 다음은 Java용 Spire.Doc을 사용하여 두 문서를 비교하고 결과를 Word 문서로 저장하는 단계입니다.
  • 문서 개체를 초기화하는 동안 두 개의 Word 문서를 개별적으로 로드합니다.
  • Document.compare() 메서드를 사용하여 두 문서를 비교합니다.
  • Document.saveToFile() 메서드를 사용하여 결과를 세 번째 Word 문서에 저장합니다.

  • import com.spire.doc.Document;
    import com.spire.doc.FileFormat;
    
    public class CompareDocuments {
    
        public static void main(String[] args) {
    
            //Load one Word document
            Document doc1 = new Document("C:\\Users\\Administrator\\Desktop\\original.docx");
    
            //Load the other Word document
            Document doc2 = new Document("C:\\Users\\Administrator\\Desktop\\revised.docx");
    
            //Compare two documents
            doc1.compare(doc2, "John");
    
            //Save the differences in a third document
            doc1.saveToFile("Differences.docx", FileFormat.Docx_2013);
            doc1.dispose();
        }
    }
    




    두 문서를 비교하고 목록에서 삽입 및 삭제 반환



    때로는 전체 차이점 대신 삽입 및 삭제에만 관심이 있을 수 있습니다. 다음은 Spire.Doc for Java를 사용하여 삽입 및 삭제를 수행하는 단계입니다.
  • 문서 개체를 초기화하는 동안 두 개의 Word 문서를 개별적으로 로드합니다.
  • Document.compare() 메서드를 사용하여 두 문서를 비교합니다.
  • DifferRevisions 클래스의 생성자 함수를 사용하여 수정본을 가져옵니다.
  • DifferRevisions.getInsertRevisions() 메서드를 통해 삽입 목록을 가져옵니다.
  • DifferRevisions.getDeleteRevisions() 메서드를 통해 삭제 목록을 가져옵니다.
  • 두 목록의 요소를 반복하여 특정 삽입 및 삭제를 가져옵니다.

  • import com.spire.doc.DifferRevisions;
    import com.spire.doc.Document;
    import com.spire.doc.DocumentObject;
    import com.spire.doc.fields.TextRange;
    import com.spire.ms.System.Collections.Generic.List;
    
    public class CompareReturnResultsInLists {
    
        public static void main(String[] args) {
    
            //Load one Word document
            Document doc1 = new Document("C:\\Users\\Administrator\\Desktop\\original.docx");
    
            //Load the other Word document
            Document doc2 = new Document("C:\\Users\\Administrator\\Desktop\\revised.docx");
    
            //Compare the two Word documents
            doc1.compare(doc2, "Author");
    
            //Get the revisions
            DifferRevisions differRevisions = new DifferRevisions(doc1);
    
            //Return the insertion revisions in a list
            List<DocumentObject> insertRevisionsList = differRevisions.getInsertRevisions();
    
            //Return the deletion revisions in a list
            List<DocumentObject>  deleteRevisionsList = differRevisions.getDeleteRevisions();
    
            //Create two int variables
            int m = 0;
            int n = 0;
    
            //Loop through the insertion revision list
            for (int i = 0; i < insertRevisionsList.size(); i++)
            {
                if (insertRevisionsList.get(i) instanceof TextRange)
                {
                    m += 1;
                    //Get the specific revision and get its content
                    TextRange textRange = (TextRange)insertRevisionsList.get(i) ;
                    System.out.println("Insertion #" + m + ":" + textRange.getText());
                }
            }
            System.out.println("============================================");
            //Loop through the deletion revision list
            for (int i = 0; i < deleteRevisionsList.size(); i++)
            {
                if (deleteRevisionsList.get(i) instanceof TextRange)
                {
                    n += 1;
                    //Get the specific revision and get its content
                    TextRange textRange = (TextRange) deleteRevisionsList.get(i) ;
                    System.out.println("Deletion #" + n + ":" + textRange.getText());
                }
            }
        }
    }
    


    좋은 웹페이지 즐겨찾기