'ADO'에 해당되는 글 2

  1. 2008.09.19 엑셀을 ADO로 연결하여 사용하기
IT_Expert/WebProgramming | Posted by 낫기법필 2008. 9. 19. 16:25

엑셀을 ADO로 연결하여 사용하기


ADO나 DAO,ASP
에 능숙하다면 아무문제가 없겠으나..

엑셀자동화오브젝트모델에만 자신있다고 덤비면 곤란한
일인것 같다..

아무튼 아래의 참고 자료를 보시기 바라고..

필요한 일이면 새로운 다른 오브젝트를 섭렵하는 좋은
기회일것이다..


건투!!!



Manipulate  
Excel Spreadsheet Data in ASP Using ADO


by Jason Fisher, MCP

Applications: ASP, Microsoft Excel, Microsoft ADO 2.0+

Operating System: Microsoft Windows

Download(참고자료  
다운로드,ASP페이지와 엑셀화일등..다운받아서 보시기
바랍니다..이것들을 이해하셔야 웹상의 소루션을
개발합니다)

Almost all Web developers these days are very well acquainted with ActiveX  
Data Objects (ADO). ADO is Microsoft's preferred data access library, and you've  
probably used it many, many times to connect to Access and SQL Server databases.  
But useful data isn't limited to databases. Indeed, some of the most useful  
business data you may come across is often stored in flat files, like Excel  
spreadsheets, plain text files, and static Web pages. The usual approach to  
manipulating this sort of data is to open these files directly, using the FileSystemObject 
object to crack open text files and something like the Excel automation model  
for spreadsheets. But for spreadsheet data, automating the Excel object model on  
the server is a processor-intensive and error-prone endeavor at best. In fact,  
Microsoft generally warns against it. But what other option do you have? ADO!

현재의 거의 모든 웹개발자들은 ADO(ActiveX Data Objects)를 매우  
잘알고 있다..

ADO는 MS에서 선호하는 데이타접근 라이브러리이고  
여러분들도 이것을 아주 많이 Access나

SQL데이타베이스과 연결하는것으로 사용을 하였을것이다..

물론 일상에서 아주 유용한 정보들이 엑셀과 같은 Flat Files(관계형데이타베이스와  
대별되는 비 입체적화일)이나 텍스트화일그리고 정적인  
웹상의 데이타로 저장된것을 많이 만났을것이다

통상적인 화일에 직접접근하여 정보를 다루는 일들을  
FileSystemObject오브젝트로 텍스트화일등의 정보를  
다룰수있겠고..엑셀과 같은 경우는 엑셀자동화모델을  
이용하여 접근할것이다..

그러나 스프레드시트의 정보를 써버상에서  
엑셀자동화모델을 이용하여 접근한다면 무리가 따른다..실은  
MS의 엔지니어들은 이렇게 써버상에서 자동화써버모델에  
접근하는 것을 하지 말기를 경고한다.

그러나..다른  
방법(옵션)이 있다..!!!ADO를 이용한 접근인것이다


Excel as a database?

엑셀을 데이타베이스로 ???


That's right! You can easily connect to and read data from a Microsoft Excel  
spreadsheet using ADO. In fact, with just a few exceptions, once connected, you  
can treat the spreadsheet pretty much as if it were a database. Think of the  
workbook as a database in which each worksheet is a separate table.

그렇다!!여러분은 ADO를 이용하여 엑셀스프레드시트의  
정보를 읽고,쓰고,연결을 쉽게 할수가 있다..

여러분은 스프레드시트를 데이타베이스와 같이 다룰수가  
있는것이다..

통합문서가 여러개의 분리된 테이블을 구성하고 있는  
데이타베이스라고 생각해보라


Why use ADO?

왜 ADO를 사용해야 하는가???


There are several excellent reasons to approach the manipulation of  
spreadsheet data as if it were part of a database. First, by now, you're already  
familiar with ADO. You understand the basics of creating Connection 
and Recordset objects, and you're comfortable with constructing the  
sort of simple SQL statements you'll need. The Excel object model, on the other  
hand, is large and complex, containing hundreds of objects and thousands of  
properties and methods, 99 percent of which is overkill for the task of simple  
data retrieval.

Another good reason to use ADO is that it's an in-process component library.  
This means that it loads into the same process space as IIS, improving  
performance and control. Excel, on the other hand, is an out-of-process library,  
creating a performance detriment anytime you use it. Moreover, Excel isn't  
designed with total interfaceless automation in mind. If you attempt to close an  
unsaved spreadsheet, for example, a dialog box may pop up on the server asking  
whether you'd like to save the file. Since users of your Web site can't see this  
dialog box, they have no way of dismissing it. This sort of behavior has been  
known to bring Web servers to their knees.

스프레드시트(엑셀)을 데이타베이스로 접근하는 우수한  
이유들이 있다

첫째..여러분은 이미 ADO에 능숙하여져 있다..여러분은  
Connection,Recordset오브젝트의

기본을 이해하고 ..데이타를 다룬 간단한 SQL문등의 사용에  
편안하다..

반면 수백개의 오브젝트와 수천개의 속성과 메소드를 갖고  
있는

엑셀오브젝트모델은 방대하고 복잡하다..


(주..이것은 여러분과 같은  
엑셀매니아들을 대상으로 하는 이야기가 아니고..웹개발자나

엑셀과 낯섫은 사람들에게 엑셀을 데이타베이스로 사용하여  
보라는 설명이라서..엑셀의

자동화모델,오브젝트모델을 모르는것으로 간주하고  
설명하고 있다
)

간단한 정보를 끌어내는 작업을 하는데 엑셀오브젝트모델을  
사용하는것은 배보다 배꼽이 더 큰일이다..

또  다른 좋은 이유는 ADO는 In-Process라이브러리인것이다..이말인  
즉은 IIS(써버상의 인터넷인포메이션써버)와 같은  
프로세스안에서 작업을 하는것이고(하청업체에게 준것이  
아니고..자체 공장에서 공동작업을 한다고 할까..),이것은  
성능과 관리의 효율성을 높인다..

반면에 엑셀은 써버상에서 Out-Process라이브러리인것이다..(프로세서에서  
자체작업공간이 아니고 별도의 작업공간)...중략!!


How to use ADO?

어떻게 ADO를 사용할것인가??


So, now that we've seen some of the reasons to use ADO for spreadsheet data  
access, let's talk about how to do so. ADO can connect to an Excel data  
source with one of two OLE DB providers, the OLE DB provider for Jet or the OLE  
DB provider for ODBC. Which you use is up to you, but in our sample code, we'll  
be using the Jet OLE DB provider.The provider needs only two pieces of  
information in order to connect successfully to an Excel spreadsheet. First,  
you'll need to tell the provider where to find the spreadsheet; in other words,  
you need to provide the fully qualified path and filename. Second, you need to  
tell the provider which version of Excel you're using. At the present time,  
there are two versions you might indicate, Excel 5.0 or Excel 8.0, as summarized  
in Table A.Taking these two items into account, here's a code snippet that  
instantiates and connects to an Excel spreadsheet:

전략...ADO를 엑셀통합문서에 연결하기 위하여서는 두가지  
방법이 있다

하나는 OLE DB Provider for JET 에 의한것이 있고

또 하나는 OLE DB Provider for ODBC에 의한것이 있다

어느것을 택하던 여러분 마음이다..

아래의 쌤플코드는 OLE DB for JET에 의한것으로 한다...하략!!!


Dim adoCn
Set adoCn = CreateObject("ADODB.Connection")
With adoCn
       .Provider = "Microsoft.Jet.OLEDB.4.0"
       .ConnectionString = _
               "Data Source=d:\MySpreadsheet.xls;" & _
               "Extended Properties=Excel 8.0;"

       .Open
End With

중요한것의 위의 Provider속성과 ConnctionString속성이다

Provider는 DAO에서 Driver와 같은 것이다..

다른 성격의 데이타베이스와의 통역을 하여주는 통역사와  
같은 역할이다

이것이 없으면 엑셀의 성질머리를 이해하지 못한다..

엑셀과 대화를 나누어줄 작은 프로그램인것이다..

ConnectionString은 도대체 접근하려고 하는 화일의 위치은  
어디에 있는가??그리고 해당화일의 버전은 어떤것인가??에  
대한 정보가 필수적인것이다


나머지는 DAO에서 엑셀통합문서에 접근하여 정보를 다루는  
방법과 다를것이 하나도 없다

나머지 이야기는 생략한다..

엑셀의 워크시트를 테이블로 접근하는 방법은 ..



[SheetName$]

과 같이 표현하여야 테이블로 인식을 한다는 점 잊지
마시고..

출처: UNO21.com



[출처] http://www.evln.org/zb41pl6/view.php?id=VisualBasic&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=4&PHPSESSID=f3fb30436b177e687a0d2318869c6d8a