오늘은 Excel Object 를 이용해서 사용하는 방법을 보도록 하겠습니다.
데이피아에서 가지고 온 자료입니다. <% xlsFile = "c:\inetpub\wwwroot\Excel\test.xls" Set objApp = CreateObject("Excel.Application") set objWorkbooks = objApp.Workbooks Set objWorkbook = objWorkbooks.Open(xlsFile) Set objWorksheet = objWorkbook.Worksheets(1) '워크 시트의 번호입니다. 두번째 있는 워크시트를 읽어올때는 2를 입력하면 됩니다. Set objRange = objWorksheet.UsedRange aData= objRange.value %> <table border=1> <% For i=1 to uBound(aData, 1) %> <tr> <% For j=1 to uBound(aData, 2) Set objCell = objWorksheet.Cells(i, j) If objCell.MergeCells then aM = objCell.MergeArea.value If uBound(aM,2) <> 1 and uBound(aM,1) <> 1 Then If not isempty(objCell.value) then %> <td align="center" colspan="<%=uBound(aM,2)%>" rowspan="<%=uBound(aM,1)%>"><%=objCell.value%></td> <% End If ElseIf uBound(aM,2) <> 1 Then If not isempty(objCell.value) then %> <td align="center" colspan="<%=uBound(aM,2)%>"><%=objCell.value%></td> <% End If ElseIf uBound(aM,1) <> 1 Then If not isempty(objCell.value) then %> <td align="center" rowspan="<%=uBound(aM,1)%>"><%=objCell.value%></td> <% End If End If Else %> <td> <% If IsEmpty(aData(i, j)) Then %> <% Else %> <%=aData(i, j)%> <% End If %> </td> <% End If %> <% Next %> </tr> <% Next %> </table> <% Set objCell = Nothing Set objRange = Nothing Set objWorksheet = Nothing objWorkbook.Close Set objWorkbook = Nothing Set objWorkbokks = Nothing Set objApp = Nothing %> 일단 실행해 보세요.... 도움이 많이 될것 같습니다.... 그럼, 아래와 같이 오류를 발생했을때... 오류내용 ---------------------------------------------------------------------------------- Set objApp = Server.CreateObject("Excel.Application") 이부분에서 오류.... 서버 개체 오류 'ASP 0178 : 80070005' Server.CreateObject 액세스 오류 사용 권한을 확인하는 동안 Server.CreateObject를 호출하지 못했습니다. 이 개체에 액세스할 수 없습니다. ---------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- Excel.Application을 사용하여 Excel파일을 오픈 할때 오류가 계속 뜨더군요 사이트에도 여기에 관련된 정확한 오류를 해결할 수 있는 방법은 없었습니다. 이벤트 뷰어를 보면 아래와 같은 이벤트가 계속 발생되고 있습니다. 컴퓨터 기본값 권한 설정에서 CLSID가 {00024500-0000-0000-C000-000000000046} 인 COM 서버 응용 프로그램에 대한 로컬 활성화 사용 권한을 사용자 IUSR_인터넷 게스트 계정 SID(.........) 에게 부여하지 않았습니다. 구성 요소 서비스 관리 도구를 사용하여 이 보안 권한을 수정할 수 있습니다. 위의 이벤트에 대한 해결 방안은 시작 - 프로그램 - 관리도구 - 구성요소서비스 구성 요소 서비스 - 컴퓨터 - 컴퓨터이름(내 컴퓨터) - DCOM구성 DCOM구성 - Microsoft Excel 응용 프로그램 - 속성 속성 - 보안탭 - 시작 및 활성화 권한 - 사용자 지정(선택) 추가 - IUSR_컴퓨터이름(인터넷 게스트 계정) 추가 인터넷 게스트 계정의 사용 권한 - 로컬 시작, 로컬 활성화 (체크) 를하면 Excel.Application에 대한 객체 생성 오류는 더 이상 발생되지 않습니다. 그러나 이벤트 뷰어를 다시 확인하면 아래와 같은 이벤트가 발생되고 있습니다. 응용 프로그램별 권한 설정에서 CLSID가 {000C101C-0000-0000-C000-000000000046} 인 COM 서버 응용 프로그램에 대한 로컬 활성화 사용 권한을 사용자 IUSR_인터넷 게스트 계정 SID(S.............)에게 부여하지 않았습니다. 구성 요소 서비스 관리 도구를 사용하여 이 보안 권한을 수정할 수 있습니다. 위의 이벤트 해결 방안은 시작 - 프로그램 - 관리도구 - 구성요소서비스 구성 요소 서비스 - 컴퓨터 - 컴퓨터이름(내 컴퓨터) - DCOM구성 DCOM구성 - {000C101C-0000-0000-C000-000000000046} - 속성 속성 - 보안탭 - 시작 및 활성화 권한 - 사용자 지정(선택) 추가 - IUSR_컴퓨터이름(인터넷 게스트 계정) 추가 인터넷 게스트 계정의 사용 권한 - 로컬 시작, 로컬 활성화 (체크) 와 같이 설정하면 이벤트 뷰어에도 오류에 관련된 이벤트는 쌓이지 않고 정상적으로 Excel.Application에 대한 객체를 생성할 수 있게 됩니다. ---------------------------------------------------------------------------------- [참고]마이크로소프트는 서버에서 excel개체가 실행되는 것은 권장하고 있지 않음 주소 : http://support.microsoft.com/default.aspx?scid=kb;ko;257757 [참고]정 사용을 원하면 ADO를 사용하라고 되어있습니다. 주소 : http://support.microsoft.com/default.aspx?scid=kb;EN-US;278973
|
|||||||||||