aaae333
10
2019-02-10 18:37:13
10
144

poi 엑셀을 사용하는데, 엑셀 정품인증이 중요한가요??


회사에서 진행중인 프로젝트 중에, 

poi 엑셀을 이용해서, 암호가 걸려있는 엑셀파일을 읽는 로직이 있는데요,

계속 아래와 같은 에러가 떴어요

ERROR - Fnd02Controller.upload(1000) | org.apache.poi.EncryptedDocumentException: Unsupported hash algorithm

그래서 코딩이 잘못된줄알고 몇 일 헤맸는데, 

알고보니 코드상에는 문제가없고, 파일의 문제더라구요,

다른 사람의 컴퓨터에서 만든 엑셀파일은 에러가없는데, 제 자리에서 만든 엑셀파일만 위와같은 에러가 뜨는데, 제 자리는 엑셀이 정품이 아니거든요. 


그래서 엑셀 정품 인증 여부 때문인가 생각해보다가도,

그럼 제 로컬에서도 안돌아가야하잖아요. 

근데 제 로컬(이클립스에서 톰캣실행) 에서는 잘 돌아가고, 오히려 다른 사람이 만든 엑셀 파일을 못읽어요


왜 이런걸까요??

0
0
  • 답변 10

  • 차오주
    371
    2019-02-10 18:43:15

    보통 암호를 풀고나서 일반엑셀로 만든후

    poi 의 api를 호출합니다. 

    제대로 암호가 풀린건지 확인해보세요.

    0
  • aaae333
    10
    2019-02-10 18:53:13
    NPOIFSFileSystem fileSystem = new NPOIFSFileSystem(new File(dirAME +                                multipartFile.getOriginalFilename()));
    EncryptionInfo info = new EncryptionInfo(fileSystem); // 이 코드에서 에러가 발생해요.

    암호를 입력받아서 비교하는 로직까지 가기도 전에 바로 위 코드 한줄에서 에러가 발생해요.
    EncryptionInfo info = new EncryptionInfo(fileSystem); 이 코드아래부터 print가 안찍혀요.


    0
  • 차오주
    371
    2019-02-10 19:07:03

    회사에 엑셀 파일  보안정책이 있어서 그럴수 있죠

    다른분 회사 피씨와 동일한 엑셀을 글쓴분 피씨에 설치해보세요 

    0
  • aaae333
    10
    2019-02-10 19:15:55

    엑셀 버전은 동일하게 2013 버전이에요

    차이점이라고는

    정품 인증 여부차이뿐이라서요

    근데 반대로, 제 로컬에서는, 제자리에서 만든 엑셀파일을 잘 읽는데, 다른 정품인증 받은 엑셀로 만든 파일은 못읽네요. ㅠㅠ

    0
  • 차오주
    371
    2019-02-10 20:11:55

    회사 보안 프로그램에서 엑셀 파일을 건들지  않나요?

    집에  있는 피씨에서는 어찌 동작하는지 궁금요 

    0
  • aaae333
    10
    2019-02-10 20:34:21

    회사 서버에서 구동중인 플젝이라 집 컴에서는 돌릴수가 없어요 ㅠ


    정리하면

    운영서버(리눅스 서버)에 반영된 플젝에서는,  다른 사람들이 만든 엑셀파일은 에러없이 구동되나

    제 자리에서 만든 엑셀파일은  Unsupported hash algorithm 오류가 발생한다.


    제 자리에서 로컬(이클립스 톰캣)에서 돌아가는 플젝에서는, 내가 만든 엑셀파일도 잘 돌아간다.

    이런상황이네요 ㅠㅠ 



    0
  • 차오주
    371
    2019-02-10 20:40:11 작성 2019-02-10 20:42:42 수정됨

    The document at http://poi.apache.org/encryption.html describes which encryption formats are support in the current release of Apache POI.

    The latest version of Apache POI is actually 3.13, not 3.9. It should be available on Maven as well.

    Please try to use the latest version, if your file is encrypted with any of the supported algorithms, it should work.


    거의 대부분의 답은 stackoverflow 에 있죠 


    0
  • aaae333
    10
    2019-02-10 20:54:50

    저도 구글링해서 위 답변 보고나서,

    서버에 반영된 lib이랑 제 로컬 lib 이랑 비교했는데

    poi 버전도 일치해요....ㅠ

    0
  • 차오주
    371
    2019-02-10 21:01:07 작성 2019-02-10 21:02:46 수정됨

    보통 일하면  고객사마다 자기들만의 보안 프로그램이 회사 모 든 피씨에서 업로드시 건듭니다.  이게 원인일 가능성이  큽니다.  되는 피시의  엑셀과 완전동일한 엑셀을 내 피씨 설치후 테스트 하는게 항상 제가 하는 테스트 입니다 

    그리고 다른 버젼의 poi가 클래스패스에 있지는 않죠?

    0
  • aaae333
    10
    2019-02-10 21:11:52

    네 다른 poi버전은 없어요. lib은 완전히 동일해요 ㅠㅠ 


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.