ExcelADO viser hvordan du kan bruke ADO til å lese og skrive data i Excel-arbeidsbøker


Sammendrag


ExcelADO.exe-eksemplet illustrerer hvordan du kan bruke ActiveX Data Objects (ADO) med Microsoft Jet OLE DB 4.0-leverandøren til å lese og skrive data i Microsoft Excel-arbeidsbøker.

Hvis du vil ha mer informasjon


Hvorfor bruke ADO?

Bruk av ADO til å overføre data til eller hente data fra en Excel-arbeidsbok, får du, utvikleren, flere fordeler sammenlignet med automatisering til Excel:
  • Ytelse. Microsoft Excel er en out-of-process ActiveX-server. ADO kjøres prosessinternt, og lagrer overhead for kostbare out-of-process-kall.
  • Skalerbarhet. For Web-applikasjoner er det ikke alltid ønskelig å automatisere Microsoft Excel. ADO gir deg en mer skalerbar løsning for å håndtere data i en arbeidsbok.
ADO kan brukes bare til å overføre Rå data til en arbeidsbok. Du kan bruke ADO til å bruke formater eller formler i celler. Du kan overføre data til en arbeidsbok som er forhåndsformatert, og formatet blir vedlikeholdt. Hvis du trenger "betinget" formateringen når dataene er satt inn, kan du utføre denne formateringen med automatisering eller en makro i arbeidsboken.

Jet OLE DB Provider detaljene for Excel-arbeidsbøker

Microsoft Jet-databasemotoren kan brukes til å få tilgang til data i andre filformater i databasen, for eksempel Excel-arbeidsbøker, gjennom installerbare indekserte sekvensielle Access Method (ISAM)-drivere. Hvis du vil åpne eksterne formater som støttes av Microsoft Jet 4.0 OLE DB leverandøren, kan du angi hvilken database i de utvidede egenskapene for tilkoblingen. Jet OLE DB-leverandøren støtter følgende databasetyper for Microsoft Excel-arbeidsbøker:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Microsoft Excel 8.0
Merknad: bruke Excel 5.0 Kildetype-databasen for arbeidsbøker i Microsoft Excel 5.0 og 7.0 (95) og bruke Excel 8.0 Kildetype-database for Microsoft Excel 8.0 (97) og 9.0 (2000) arbeidsbøker. ExcelADO.exe-eksemplet bruker Excel-arbeidsbøker i Microsoft Excel 97 og Excel 2000-format.


Følgende eksempler viser en arbeidsbok for ADO-tilkobling til en Excel 97 (eller 2000):
Dim oConn As New ADODB.Connection
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open "C:\Book1.xls"
'....
.Close
End With
- eller -
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Book1.xls;" & _
"Extended Properties=""Excel 8.0;"""
oConn.Close
Navnekonvensjoner for tabell

Det er flere måter du kan referere til en tabell (eller område) i en Excel-arbeidsbok:
  • Bruke arknavnet etterfulgt av et dollartegn (for eksempel [Ark1$] eller [min regnearket$]). En arbeidsbok tabell det refereres til på denne måten består av hele brukte området av regnearket.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
  • Bruke et område med et definert navn (for eksempel [Tabell1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
  • Bruke et område med en bestemt adresse (for eksempel [Ark1 $a1: B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
Tabelloverskrifter

Med Excel-arbeidsbøker, den første raden i et område som anses å være overskriftsraden (eller feltnavn) som standard. Hvis det første området ikke inneholder overskrifter, kan du angi HDR = Nei i de utvidede egenskapene i tilkoblingsstrengen. Hvis den første raden ikke inneholder overskrifter, OLE DB-leverandøren automatisk navn feltene for deg (der det kan representere det første feltet i F1, F2 ville representere det andre feltet, og så videre).

Datatyper

I motsetning til en tradisjonell database er det ingen direkte måte å angi datatypene for kolonnene i Excel-tabeller. OLE DB-leverandøren skanner i stedet et begrenset antall rader i en kolonne til å "gjette" datatypen for feltet. Antall rader som skal behandles standarder til åtte (8) rader. Du kan endre antall rader som skal skannes ved å angi en verdi mellom én (1) og seksten (16) for MAXSCANROWS -innstillingen i de utvidede egenskapene i tilkoblingsstrengen.

Filer som er inkludert i utvalget

ExcelADO.exe-filen inneholder Visual Basic Standard EXE-prosjekt Active Server Pages (ASP), Microsoft Excel 97 og Excel 2000-arbeidsbøker som fungerer som maler, og Microsoft Access 2000-databaser. Filene som er inkludert er som følger:

Visual Basic Project-filer som Standard EXE
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Microsoft Excel-arbeidsbøker
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access-Database
  • Data.mdb

Slik bruker du utvalget

Pakk ut innholdet i .exe-filen til en mappe.

Bruke Visual Basic-prosjektet:
  1. Åpne filen ExcelADO.vbp i Visual Basic.
  2. Velg referanserprosjekt -menyen, og deretter angi referanser til Microsoft ADO Ext. for DDL and Security og Microsoft ActiveX Data Objects Library. Dette eksemplet koden fungerer både med ADO 2.5 og ADO 2.6, så Velg versjonen som er aktuelle for datamaskinen din.
  3. Trykk F5 for å kjøre programmet. Det vises et skjema for demonstrasjon.
  4. Klikk utvalg 1. Dette eksemplet oppretter en kopi av OrdersTemplate.xls. Deretter bruker ADO til å koble til arbeidsboken og åpner et postsett i en tabell som er et definert område i arbeidsboken. Navnet på området er Orders_Table. Den bruker ADO AddNew/Update metoder for å legge til poster (eller rader) til området som er definert i arbeidsboken. Når rad-tilleggene er fullført, ADO- tilkoblingen er lukket, og arbeidsboken vises i Microsoft Excel. Følg denne fremgangsmåten for å gjøre dette:
    1. Velg navnSett inn -menyen i Excel, og deretter velger du Definer.
    2. I listen over definerte navn, velger du Orders_Table. Legg merke til at det definerte navnet har vokst til å ta med poster som nylig er lagt til. Det definerte navnet brukes sammen med Excel-forskyvning-funksjonen til å beregne en totalsum på dataene legges til i regnearket.
    3. Avslutt Microsoft Excel, og gå tilbake til Visual Basic-programmet.
  5. Klikk eksempel 2. Dette eksemplet oppretter en kopi av EmpDataTemplate.xls. Den bruker ADO til å koble til arbeidsboken og Execute -metoden for ADO-tilkobling til å sette inn data (INSERT INTO i SQL) i arbeidsboken. Data legges på definerte områder (eller tabeller) i arbeidsboken. Når dataene er overført, tilkoblingen er lukket, og arbeidsboken som vises i Excel. Når du undersøker arbeidsboken, avslutter Microsoft Excel, og deretter gå tilbake til Visual Basic-programmet.

  6. Klikk utvalg 3. Dette eksemplet oppretter en kopi av ProductsTemplate.xls. Den bruker Microsoft ADO utvidelser 2.1 for DDL og sikkerhet objektbiblioteket (ADOX) for å legge til en ny tabell (eller et nytt regneark) i arbeidsboken. Et ADO- postsett , hentes for den nye tabellen og dataene legges til ved hjelp av AddNew/Update metoder. Når rad-tilleggene er fullført, ADO- tilkoblingen er lukket, og arbeidsboken vises i Excel. Arbeidsboken inneholder Visual Basic for Applications (VBA)-makrokode i Åpne -hendelsen i arbeidsboken. Makroen kjører når arbeidsboken åpnes. Hvis det finnes nye "Produkter"-regneark i arbeidsboken, makrokoden formater i regnearket og deretter makrokoden blir slettet. Denne teknikken viser en måte for Web-utviklere til å flytte formateringskode fra Web-serveren og på klienten. En Web-applikasjon kan direkteavspille en formatert arbeidsbok som inneholder data til klienten slik at makrokode som vil utføre en hvilken som helst "betinget" som formatering som kan ikke brukes i en mal alene skal kjøres på klienten.

    Merk: Hvis du vil undersøke makrokoden, vise ThisWorkbook modulen i VBAProject for ProductsTemplate.xls.


  7. Klikk utvalg 4. Dette eksemplet gir samme resultat som eksempel 1, men metoden som brukes til å overføre dataene er litt forskjellig. Eksempel 1 legges poster (eller rader) til i regnearket én om gangen. Eksempel 4 legger til poster i bulk ved å legge ved Excel-tabell i en Access-database og kjører en tilføyingsspørring (eller INSERT INTO... Velg fra) vil tilføye poster fra en tabell i Access-tabellen i Excel-tabellen. Når overføringen er fullført, er koblet Excel-tabell fra Access-databasen, og som fører til at arbeidsboken vises i Excel. Avslutt Microsoft Excel, og gå tilbake til Visual Basic-programmet.


  8. Siste eksemplet illustrerer hvordan du kan lese data fra en Excel-arbeidsbok. Velg en tabell i fra rullegardinlisten, og klikk deretter eksempeldatabasen 5. Immediate-vinduet viser innholdet i tabellen du valgte. Hvis du velger et helt regneark for tabellen ("Ark1$" eller "Ark2$"), viser innholdet i det brukte området for dette regnearket i øyeblikksvinduet. Legg merke til at det brukte området ikke nødvendigvis begynner i rad 1, kolonne 1 i regnearket. Det brukte området starter på den øverste cellen lengst til venstre i regnearket som inneholder data.


    Hvis du velger et bestemt område-adresse eller et definert område, viser øyeblikksvinduet innholdet i bare dette området i regnearket.
Du bruker Active Server Pages (ASP):
  1. Opprett en ny mappe med navnet ExcelADO i startmappen på Web-serveren. Vær oppmerksom på at standardbanen for startmappen er C:\InetPut\WWWRoot.
  2. Kopier følgende filer til mappen du opprettet i forrige trinn:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. ASP-skript i denne eksempel opprette kopier av arbeidsboken malen med metoden kopi av FileSystemObject. Klient som får tilgang til skriptet må ha skrivetilgang til mappen som inneholder ASP for metoden Copy skal lykkes.
  4. Gå til Orders.asp (det vil si http://YourServer/ExcelADO/Orders.ASP), og Legg merke til at leseren viser en Excel-arbeidsbok som ligner de i eksempel 1 i Visual Basic-programmet.
  5. Gå til EmpData.asp (det vil si http://YourServer/ExcelADO/EmpData.ASP), og Legg merke til at leseren viser en Excel-arbeidsbok som ligner de i eksempel 2 i Visual Basic-programmet.

(c) Microsoft Corporation 2000, alle rettigheter forbeholdt. Bidrag fra Lori B. Turner, Microsoft Corporation.

Referanser


Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:

195951 slik: spørrings- og Excel-Data ved hjelp av ADO fra ASP

194124 PRB: Excel-verdier som returneres som NULL ved hjelp av DAO OpenRecordset
Slik 193998 : lese- og binære Data i ASP
247412 INFO: metoder for overføring av Data til Excel fra Visual Basic
257819 slik: bruke ADO med Excel-Data fra Visual Basic eller VBA