ExcelADO visar hur du använder ADO för att läsa och skriva data i Excel-arbetsböcker


Sammanfattning


ExcelADO. exe-exemplet illustrerar hur du kan använda ActiveX Data Objects (ADO) med Microsoft Jet OLE DB 4,0-Provider för att läsa och skriva data i Microsoft Excel-arbetsböcker.

Mer information


Varför ska jag använda ADO?

Om du använder ADO för att överföra data till eller hämta data från en Excel-arbetsbok får du utvecklaren flera fördelar via Automation till Excel:
  • Prestanda. Microsoft Excel är en gammal ActiveX-Server. ADO körs i processen och sparar overhead för dyra samtal utanför processen.
  • Skalbarhet. För webb program är det inte alltid önskvärt att automatisera Microsoft Excel. ADO visar en mer skalbar lösning för data hantering i en arbets bok.
ADO kan användas för att överföra rå data till en arbets bok. Du kan inte använda ADO för att tillämpa format eller formler för celler. Du kan dock överföra data till en arbets bok som är förformaterad och det underhålls. Om du behöver "villkorsstyrd" formatering efter att data har infogats kan du utföra denna formatering med Automation eller med ett makro i arbets boken.

OLE DB-providerspecifika för Excel-arbetsböcker

Microsoft Jet-databasmotorn kan användas för att komma åt data i andra databas fil format, till exempel Excel-arbetsböcker, via installerbara indexbaserade åtkomst metod driv rutiner. För att kunna öppna externa format som stöds av Microsoft Jet 4,0 OLE DB-providern anger du databas typen i de utökade egenskaperna för anslutningen. Jet OLE DB-providern har stöd för följande databas typer för Microsoft Excel-arbetsböcker:
  • Excel 3,0
  • Excel 4,0
  • Excel 5,0
  • Excel 8,0
Obs!använd Excel 5,0 käll databas typ för microsoft Excel 5,0-och 7,0 (95)-arbets böcker och Använd Excel-databas typen för Microsoft excel-8,0 och 8,0-arbetsböcker. I ExcelADO. exe används Excel-arbetsböcker i Excel 97 och Excel 2000-format. Följande exempel visar en ADO-anslutning till en Excel 97-arbets bok (eller 2000):
Dim oConn As New ADODB.ConnectionWith oConn    .Provider = "Microsoft.Jet.OLEDB.4.0"    .Properties("Extended Properties").Value = "Excel 8.0"    .Open "C:\Book1.xls"    '....    .CloseEnd With
     respektive
Dim oConn As New ADODB.ConnectionoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _           "Data Source=C:\Book1.xls;" & _           "Extended Properties=""Excel 8.0;"""oConn.Close
Namngivnings regler för tabellDet finns flera sätt att referera till en tabell (eller ett område) i en Excel-arbetsbok:
  • Använd kalkyl bladets namn följt av ett dollar tecken (till exempel [Blad1 $] eller [mitt kalkyl blad $]). En arbets boks tabell som refereras till på det här sättet består av hela området som används i kalkyl bladet.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
  • Använd ett område med ett definierat namn (till exempel [Tabell1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
  • Använd ett område med en viss adress (till exempel [Blad1 $ a1: B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
Tabell rubrikerMed Excel-arbetsböcker betraktas den första raden i ett område som rubrik rad (eller fält namn) som standard. Om det första området inte innehåller huvuden kan du ange HDR = nej i de utökade egenskaperna i din anslutnings sträng. Om den första raden inte innehåller rubriker får OLE DB-providern automatiskt namnen på fälten åt dig (där F1 representerar det andra fältet och så vidare).Data typerTill skillnad från en traditionell databas finns det inget direkt sätt att ange data typer för kolumner i Excel-tabeller. Istället kontrollerar OLE DB-providern ett begränsat antal rader i en kolumn för att "gissa" data typen för fältet. Antalet rader som ska genomsökas standardvärdet är åtta (8) rader. Du kan ändra antalet rader som ska genomsökas genom att ange ett (1) och sexton (16) för inställningen MAXSCANROWS i de utökade egenskaperna för din anslutnings sträng.

Filer som ingår i exemplet

ExcelADO. exe-filen innehåller ett Visual Basic-standardexe-projekt, ASP (Active Server Pages), Excel 97-och Excel 2000-arbets böcker som fungerar som mallar och en Microsoft Access 2000-databas. Följande filer ingår:Visual Basic exe Project-projektfiler
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Aktiva Server sidor
  • EmpData.asp
  • Orders.asp
Microsoft Excel-arbetsböcker
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access-databas
  • Data.mdb

Så här använder du exemplet

Extrahera innehållet i exe-filen till en mapp.Så här använder du Visual Basic-projektet:
  1. Öppna filen ExcelADO. VBP i Visual Basic.
  2. Välj referenserprojekt -menyn och ange sedan referenser till Microsoft ADO ext. för DDL och säkerhet och Microsoft ActiveX Data Objects-bibliotek. Den här exempel koden fungerar med både ADO 2,5 och ADO 2,6, så välj den version som passar din dator.
  3. Kör programmet genom att trycka på F5. Ett formulär för demonstrationen visas.
  4. Klicka på exempel 1. Det här exemplet skapar en kopia av OrdersTemplate. xls. Sedan används ADO för att ansluta till arbets boken och en post mängd visas i en tabell som är ett definierat område i arbets boken. Namnet på området är Orders_Table. Den använder ADO AddNew/Update -metoder för att lägga till poster (eller rader) i det definierade området i arbets boken. När rad tilläggen är slutförd stängs ADO- anslutningen och arbets boken visas i Microsoft Excel. Gör så här:
    1. Välj namnInfoga -menyn i Excel och välj sedan definiera.
    2. I listan med definierade namn väljer du Orders_Table. Observera att det definierade namnet har växt för de nya posterna. Det definierade namnet används tillsammans med Excel-funktionen förskjutning för att beräkna en summa för de data som lagts till i kalkyl bladet.
    3. Avsluta Microsoft Excel och gå tillbaka till Visual Basic-programmet.
  5. Klicka på exempel 2. Det här exemplet skapar en kopia av EmpDataTemplate. xls. Den använder ADO för att ansluta till arbets boken och använder execute -metoden för ADO-anslutningen för att infoga data (infoga i SQL) i arbets boken. Data läggs till i definierade områden (eller tabeller) i arbets boken. När informationen överförs stängs anslutningen och arbets boken visas i Excel. När du har granskat arbets boken avslutar du Microsoft Excel och går sedan tillbaka till Visual Basic-programmet.
  6. Klicka på exempel 3. Det här exemplet skapar en kopia av ProductsTemplate. xls. Den använder Microsoft ADO-tillägg 2,1 för DDL-och säkerhets objekt bibliotek (ADOX) för att lägga till en ny tabell (eller ett nytt kalkyl blad) i arbets boken. En ADO- postuppsättning hämtas då den nya tabellen och informationen läggs till med hjälp av metoderna AddNew/Update . När rad tilläggen är slutförd stängs ADO- anslutningen och arbets boken visas i Excel. Arbets boken innehåller VBA-kod (Visual Basic for Applications) i händelsen öppning för arbets boken. Makrot körs när arbets boken öppnas; om det nya kalkyl bladet "produkter" finns i arbets boken formateras kalkyl bladet och sedan makro koden tas bort. Den här tekniken är ett sätt för webbutvecklaren att flytta formateringsinformationen från webb servern och till klienten. Ett webb program kan strömma en formaterad arbets bok som innehåller data till klienten och tillåta makrokod som utför en "villkorsstyrd" formatering som kanske inte är möjlig i en mall för att köras på klienten.Obs!om du vill undersöka makrokod kan du Visa objektet -modulen i Projektegenskaper för ProductsTemplate. xls.
  7. Klicka på exempel 4. Det här exemplet ger samma resultat som exempel 1, men den teknik som används för att överföra data är lite annorlunda. I exempel 1 läggs poster (eller rader) till i kalkyl bladet en i taget. Exempel 4 lägger till posterna i bulk genom att bifoga Excel-tabellen till en Access-databas och köra en tilläggsfråga (eller infoga i... Välj FROM) om du vill lägga till poster från en tabell i Access-tabellen till Excel-tabellen. När överföringen är färdig är Excel-tabellen frånkopplad från Access-databasen och arbets boken som visas i Excel. Avsluta Excel och gå tillbaka till Visual Basic-programmet.
  8. Det sista exemplet visar hur du kan läsa data från en Excel-arbetsbok. Markera en tabell i list rutan och klicka sedan på exempel 5. I direkt fönstret visas innehållet i den tabell som du har markerat. Om du markerar ett helt kalkyl blad ("Blad1 $" eller "Blad2 $") för tabellen visas innehållet i det område som används för kalkyl bladet. Observera att det område som används inte nödvändigt vis börjar på rad 1, kolumn 1 i kalkyl bladet. Det intervall som används börjar i den övre vänstra cellen i det kalkyl blad som innehåller data. Om du väljer en specifik intervall adress eller ett definierat område visar direkt fönstret innehållet i det område som finns i kalkyl bladet.
Så här använder du ASP (Active Server Pages):
  1. Skapa en ny mapp med namnet ExcelADO i webb serverns Hem Katalog. Observera att standard Sök vägen för hem katalogen är C:\InetPut\WWWRoot.
  2. Kopiera följande filer till mappen som du skapade i föregående steg:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls
  3. ASP-skripten i det här exemplet skapas kopior av arbetsmallarna med copy -metoden FileSystemObject. För att kopierings metoden ska lyckas måste klienten som använder skriptet ha skriv åtkomst till mappen som innehåller ASP.
  4. Navigera till Orders. asp (som är http://YourServer/ExcelADO/Orders.ASP) och Observera att webbläsaren visar en Excel-arbetsbok som liknar den i exempel 1 i Visual Basic-programmet.
  5. Navigera till EmpData. asp (som är http://YourServer/ExcelADO/EmpData.ASP) och Observera att webbläsaren visar en Excel-arbetsbok som liknar den i exempel 2 i Visual Basic-programmet.
(c) Microsoft Corporation 2000, med ensam rätt. Bidrag från Lori B. Turner, Microsoft Corporation.

Referenser


Om du vill veta mer klickar du på följande artikel nummer och läser artiklarna i Microsoft Knowledge Base:
195951 HOWTO: fråga och uppdatera Excel-data med hjälp av ADO från ASP
194124 PRB: Excel-värden returneras som NULL med DAO OpenRecordset
193998 HOWTO: läsa och Visa binära data i ASP
247412 INFO: metoder för att överföra data till Excel från Visual Basic
257819 HOWTO: använda ADO med Excel-data från Visual Basic eller VBA