2012-10-16 2 views
1

Apache POI와 두 개의 워크 시트를 비교해야합니다. 워크 시트 비교 기능과 같은 쉬운 방법이 있습니까, 아니면 각 셀을 비교해야합니까?Apache POI : 워크 시트를 비교하는 쉬운 방법은 무엇입니까?

+1

"비교"는 어떻게 정의합니까? 동일하거나 다른 비즈니스 규칙은 무엇입니까? 스타일? 세포? 내용? 그림 물감? 등 – Gagravarr

+0

셀의 값이 다른 경우 셀이 다르면 워크 시트가 다릅니다. – user840930

답변

0

모든 셀을 반복하여 실행중인 해시 등을 계산해보십시오. 워크 시트마다 한 번씩 두 번 실행하고 해시가 동일하면 워크 시트가 동일합니다. AFAIK, 그런 일을하는 즉시 사용 가능한 방법이 없습니다.

저는이 방법이 한 번에 하나의 워크 시트 만 열어 놓을 것이기 때문에 셀 단위로 비교하는 것보다 더 나은 방법이라고 생각합니다 (셀 단위 접근법의 두 워크 시트와 반대) .

3

Google에서 POI 통합 문서 비교에 관한 첫 번째 문제 중 하나이기 때문에 단위 테스트를 위해 효과적인 해결책을 제시하고자합니다. , 기본적으로

http://baddotrobot.com/blog/2012/09/14/diff-excel-with-java-and-hamcrest/

합니다 (Github에서의 README에 설명) Maven을 통해 라이브러리를 가져 : 나는이 문제를 해결하기 위해 좋은 Hamcrest의 정규 표현을 발견했다. 내가 얻을 비교에 대한 자세한 사항을 검색하려면 여기를 MatcherAssert를 사용하지만 JUnit을 어설도 사용할 수 :

MatcherAssert.assertThat("Workbooks to be identical", actualWorkbook, 
    WorkbookMatcher.sameWorkbook(expectedWorkbook)); 

참고 : 두 개의 POI 통합 문서가 있으면, 당신은이 비슷한 주장을 작성합니다. 이것은 저자의 웹 사이트에 기록되어 있습니다.

GitHub 및 저자 personal Maven repository에서 확인할 수 있습니다.

관련 문제