달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31


..... 엑셀... 만지다 만지다 만지다 보니까 점점 더 미궁이야..


** 시나리오
  1. 클라이언트에서 서버로 엑셀 파일 업로드.
  2. 업로드 된 엑셀 파일 어플리케이션 단에서(Excel Open) 읽기.
  3. 업로드된 엑셀 읽는 도중 예외가 발생했던 상황들.. 
  3 - 1. Response 를 통해 무늬만 엑셀인 파일이 넘어왔을 경우.
  3 - 2. 정상적으로 Excel을 통해서 만들어진 파일인데 Sheet 에 보호가 걸려있는 경우. 


  이글 이전에 써놓았지만...

시트 보호가 걸려 있는 경우 시트에서 사용된 셀을 들고 오기 위해서.

Range CellsRange = excelSheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);

요런 아름다운 코드를 호출 하는 순간  두둥!! 에러 작렬!!!

시트 보호가 된 녀석은 저런식으로 범위를 긁어올 수 없으시답니다.

(아아 난 쉬운 시트가 아냐~ 라고 외치는 듯 하군 -_- 콱 그냥..)

그래서 한줄 추가해줘서 처리했다....

if (excelSheet.ProtectContents)
{
    excelSheet.Unprotect(Type.Missing);
}

해당 시트가 보호가 걸려있으면 풀어버리기!!! 물론 암호까지 걸어서 내보낸다면 방법 없다.

전화해서 "미친거 아니세요 ^^ 니들이 읽으세요." 하는 수 밖에 -_-;;

로컬에서 테스트 했을때는 아~무~ 문제 없었다.... (음 정말인데 믿어 그냥!!!)

그러나!!! 밧뜨!!! 서버에 올려놓고 퍽~ 실행한 순간...

..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................

멈췄다.

.... 문자 그대로. 그냥 멈췄다. 에러 메세지 따위 보여주지도 않고 그냥..

(항상 이게 정말 열받는 경우.. 에러 메세지를 제대로 보여달라고!!!!!)


그래서 소스 줄 마다 Response.Write와 End 를 박아 확인했는데. 걸린 부분은..

excelSheet.Unprotect(Type.Missing);

이 시트 보호 해제 하는 부분에서 안넘어가는 거다.

(.... 뒤에 얘기하겠지만.. 정말 제대로 낚였다...)


헙쓰.. 하고 긴장 바짝했다. 이건 잘 모르는 메서드거니와 -_-.. 에러 메세지도 없이 디버깅하는 취미는 없는..

그저 내공 부족한 뉴비인 나니까...


여튼.. 파일 권한 문제 인가 싶어 해당 폴더에 NTFS 권한을 확인 함은 물론,

DCOM 구성요소 설정도 확인했는데.. 이상 없음..


머리에 쥐가 나기 일보 직전에..

excelApp.Visible = true; 해당 코드로 엑셀을 눈으로 보면서 디버깅 하는 도중 만난.

저장 할래? 말래? 라는 창 하나..

응 이건 뭐 =ㅅ=??

...엑셀 시트 보호 해제 메서드를 호출하면, 엑셀 파일 내용이 변경됬으므로, 저장을 확인 하는 창이 나타났던 거였다.

해당 창에서 확인 버튼을 안눌러주니 멈춰있지 -_-...

근데 왜 소스가 저~ 위에서 멈추냐고... 정말 아오...


자... 잡설이 길었다.

뭐 보면 알겠지만. 항상 해결 방법은 간단하다.. 몰라서 삽질하는거지..




** 해결 방법.

excelApp.DisplayAlerts = false;

깔끔하지 않은가? 그저 경고창 따위.. 화면에 안띄우면 그만인거다 -_-.


아아 엑셀 정말 죽어버릴꺼 같다 ㅠ_ㅠ.




Posted by 은하비류연
|