안규 공부방

ACTIVE SERVER PAGE > Excel Connection

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

엑셀 파일가 준비가 잘 되었으면, 이제 Excel를 Connection 시켜 보도록 하겠습니다.
 
  12.2.1  OLE-DB를 통한 Connection
  Set objCnn = Server.CreateObject("ADODB.Connection") strCnn = "Driver={Microsoft Excel Driver (*.xls)}; DBQ=c:\inetpub\wwwroot\Excel\test.xls" objCnn.Open strCnn strSQL = "SELECT * from test" set objRs=ObjCnn.Execute(strSql)
 
위의 예제와 같이 사용하면 됩니다. strCnn 에서 DBQ는 xls 파일의 절대경로를 적어주시면 되구요.
SELECT * FROM TEST 에서 'test'는  엑셀 파일에서 정의한 이름을 사용하시면 됩니다.

특별한것은 없지요??

  12.2.2 레코드값 출력하기.
 

		Set objCnn = Server.CreateObject("ADODB.Connection")
		strCnn = "Driver={Microsoft Excel Driver (*.xls)}; DBQ=c:\inetpub\wwwroot\Excel\test.xls"
		objCnn.Open strCnn
			
		strSQL = "SELECT * from test" 
		Set objRs = Server.CreateObject("ADODB.Recordset")
		objRs.Open strSQL, objCnn
		
		Array1 = objRs.getRows()	
		
		Response.write "칼럼수:"&Ubound(Array1,1)&"<br>"
		Response.write "행수:"&Ubound(Array1,2)


위의 예제를 보도록 하겠습니다.
위의 예제를 보면,,,,

레코드셋 객체를 이용해서 Excel의 값을 가지고 옵니다. 여기에서 getRows() 함수를 사용하면,

레코드의 값을 가지고 올수 있는데요. 여기에서 Array1 에 들어가는 값은 2차원 배열의 형태로

들어가게 됩니다.

그럼, 여기에서 배열의 크기를 알아봐야겠지요??

Array1 = objRs.getRows()

Response.write "칼럼수:"&Ubound(Array1,1)&"<br>"
Response.write "행수:"&Ubound(Array1,2)

여기에서 Ubound 함수는 배열의 가장큰 인자값을 구해주는 함수입니다.

결과는 -------
컬럼수 : 3
행수 : 18

이라는 값이 나오는군요.

즉, 칼럼수는 4 가 되고, 행수는 19가 된다는 거지여?

이걸 표로 그려 보도록 하겠습니다.
 
Array1(0,0) Array1(0,1) Array1(0,2) Array1(0,3)
Array1(1,0) Array1(1,1) Array1(1,2) Array1(1,3)
...
Array1(16,0) Array1(16,1) Array1(16,2) Array1(16,3)
Array1(17,0) Array1(17,1) Array1(17,2) Array1(17,3)
   
이와 같이 값이 들어가겠지요???

참, 중요한거 한가지...
블럭을 지정한 Excel 파일의 첫번째행(위에서는 A1..D1)을 읽어오지 않습니다 블럭을
두번째 행부터 지정해서 사용하세요.

이해가 가시나여?

그럼, 전체 엑셀값을 불러올려면 어케 해야 할까여???
 
Array1 = objRs.getRows()	
		
		Response.Write "<table border=1>"
		For i=0 to Ubound(Array1,2)
			Response.Write "lt;tr>"
			For j=0 to Ubound(Array1,1)
				If Array1(j,i) <> "" Then
					Response.Write "lt;td>" & Array(j,i) & "</td>"
				Else
					Response.Write "lt;td> </td>"
				End If
			Next
			Response.Write "lt;/tr>"
		Next
		Response.Write "</table>"


  직접 돌려보세요.... 테이블이 쭈욱 출력되는것을 볼수 있습니다.
 
  도움이 되셨나여???
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.