안규 공부방

ACTIVE SERVER PAGE > Excel 관련 Object

등록일 : 2017-07-04 17:39 조회수 : 92,964

오늘은 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
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.