메뉴 건너뛰기

Dev tips

ASP [ASP] ASP 페이지에 Excel 스프레드시트 표시하기

taknim 2012.10.09 22:09 조회 수 : 8699 추천:1364

http://cafe.naver.com/webdeveloper/209http://cafe.naver.com/webdeveloper/193

ASP페이지에 Excel 스프레드시트를 표시하는 간단한 예제입니다.

쿼리문에 있는 [TEST$] 는 Excel 시트명이며 자주 에러를 발생시키는 부분과 GetString 함수는 주석으로 설명하였습니다

 

 

------------------------------------예제는 여기서부터 -------------------------------------------------------------------

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> ASP 페이지에 Excel 스프레드시트 표시하기 </TITLE>
</HEAD>
<BODY>
<%
Set dbCon = Server.CreateObject("ADODB.Connection")
strConnect = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & Server.MapPath("\") & "\TEST.xls;" '엑셀파일 경로

'다음과 같은 오류가 나왔다면 엑셀파일이 열려있거나, 아니면 사용자권한이 파일접근 금지되어 있을경우입니다
'Microsoft OLE DB Provider for ODBC Drivers 오류 '80004005'
'[Microsoft][ODBC Excel Driver]일반 오류 레지스트리 키 'Temporary (volatile) Jet DSN for process 0x8c0 Thread 0xa9c DBC '0x16d6764 Excel'을(를) 열 수 없습니다.


dbCon.Open strConnect
SQL = "Select * from [TEST$]"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, dbCon


'ADO 2.0 이상에는 GetString이라는 함수가 있습니다. 이 함수를 이용하면 Do..Loop부분과 레코드셋의 eof를 체크하는 부분이 필요없습니다
exlValue = rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
%>
<TABLE border=1>
<TR><TD>
<% Response.Write(exlValue)%>
</TD></TR>
</TABLE>
</BODY>
</HTML>

 

 

저번에 올린 Excel에 스프레드시트 표시하기의 발전형 예제입니다.

엑셀파일명만 알고 스프레드시트에는 무슨이름이 들어있는지 모를때 OpenSchema 메서드를 이용하여

스프레드시트명을 알아내어 스프레드시트 내용을 뿌려줍니다. 

 

-------------------------------------예제는 여기서부터 -----------------------------------------------------------------

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> ASP 페이지에 Excel 스프레드시트 표시하기 </TITLE>
</HEAD>
<BODY>
<%
Dim SheetName, dbCon, strConnect, rsList, rs


Set dbCon = Server.CreateObject("ADODB.Connection")
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\") & "\TEST.xls " & "; Extended Properties=Excel 8.0;"  '엑셀파일 경로


dbCon.Open strConnect

'OpenSchema 메서드를 사용하여 데이터베이스의 테이블에 대한 정보가 들어있는 Recordset 개체를 반환합니다.
'스키마 상수는 다음과 같습니다.
'adSchemaColumns = 4, adSchemaProviderTypes = 22, adSchemaTables = 20
set rsList = dbCon.OpenSchema(20)

Do Until rsList.EOF Or rsList.BOF

    SheetName = rsList(2) '2는 카탈로그의 Character Set을 되돌려 줍니다.

    rsList.MoveNext

Loop


 
 SQL = "Select * from [" & SheetName & "]"


 Set rs = Server.CreateObject("ADODB.Recordset")
 rs.Open SQL, dbCon


  exlValue = rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")

 

%>
<TABLE border=1>
<TR><TD>
<% Response.Write(exlValue)%>
</TD></TR>
</TABLE>
<%
rs.Close
Set rs = Nothing
rsList.Close
set rsList = Nothing
dbCon.close
set dbCon = Nothing
%>
</BODY>
</HTML>

 

 

Dim strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & dbName & ";Extended Properties=Excel 12.0;"