Ako previesť údaje do zošita programu Excel pomocou jazyka Visual Basic.NET

Preklady článku Preklady článku
ID článku: 306022 - Zobraziť produkty, ktorých sa tento článok týka.
Pre Microsoft Visual C#.ČISTÁ verziu tohto článku, pozri 306023.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento podrobný článok popisuje niekoľko metód prenášajú sa údaje do programu Excel 2002 z Visual Basic.ČISTÝ program. Tento článok tiež predstavuje výhody a nevýhody každej metódy, takže môžete Vyberte toto riešenie, ktoré funguje najlepšie pre vašu situáciu.

Prehľad

Technika, ktorá sa najčastejšie používa na prenos údajov Zošit programu Excel Automatizácia. S automatizácie, môžete volať metódy a vlastnosti, ktoré sú špecifické pre program Excel úlohy. Automatizácia vám dáva najväčšiu flexibilitu pre špecifikujúce miesto vaše údaje v zošite a naformátovať zošit a značka rôzne nastavenia času spustenia.

S automatizácia, môžete použiť niekoľko metód na prenos dát:
  • Prenos údajov jednotlivých bunkách.
  • Prenos údajov v poli pre rozsah buniek.
  • Prenos údajov v ADO záznamov na rozsah buniek pomocou CopyFromRecordset metóda.
  • Vytvoriť Tabuľky dotazu Objekt pracovného hárka programu Excel, ktoré obsahuje výsledok dotazu na zdroji údajov ODBC alebo OLEDB.
  • Prenos dát do schránky a potom prilepte obsah Schránky do hárka programu Excel.
Môžete tiež použiť niekoľko metód, ktoré nemusí nevyhnutne vyžadovať automatizácie prenosu údajov do programu Excel. Ak používate server-bočné program, to môže byť dobrý prístup pre prijatie podstatná časť spracovania údajov preč od vašich klientov.

Tieto prístupy sa môžu použiť na prenos dát bez automatizácie:
  • Prenos dát do textového súboru s tabulátorom alebo čiarkou Program Excel môžete neskôr analyzovať do buniek na pracovnom hárku.
  • Prenos dát na pracovnom hárku pomocou ADO.NET.
  • Prenos údajov XML do programu Excel (len verzia 2002) poskytnúť údaje, ktoré je naformátované a usporiadané do riadkov a stĺpcov.

Techniky

Na prenos údajov jednotlivých bunkách použiť automatizácie

Automatizácia, môžete uskutočniť prenos údajov s jednou bunkou hárka na čas, takto.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object

        'Start a new workbook in Excel.
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Add data to cells of the first worksheet in the new workbook.
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = "Last Name"
        oSheet.Range("B1").Value = "First Name"
        oSheet.Range("A1:B1").Font.Bold = True
        oSheet.Range("A2").Value = "Doe"
        oSheet.Range("B2").Value = "John"

        'Save the Workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book1.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				
Prenášanie údajov jednotlivých bunkách možno prijateľný prístup, ak existuje nie je veľa údaje na prenos. Máte flexibilitu dať údajov kdekoľvek v zošit a môžete formátovať bunky podmienečne v čase spustenia. Avšak, to prístup sa neodporúča, ak máte veľa údaje preniesť do programu Excel zošit. Každý Rozsah objekt môžete získať v čase spustenia výsledky v rozhranie žiadosť. Preto prenášanie údajov týmto spôsobom môže byť pomalý.
Okrem toho Systém Microsoft Windows 95, Microsoft Windows 98 a Microsoft Windows Millennium Edition (Me) majú 64 KB obmedzenie na rozhranie žiadostí. Ak máte 64 KB alebo viac rozhrania požiada, môže prestať automatizačný server (Excel) reagovať, alebo si môžu dostať chybové hlásenia, ktoré určujú málo pamäte. Ďalšie informácie získate po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
216400Cross-proces COM automatizácia možno zavesiť klientska aplikácia na Win95/98
Opäť, prenos údajov jednotlivých bunkách je prijateľné len pre malé množstvo údajov. Ak musíte na neho previesť veľké množstvo údajov nastaví programu Excel Zvážte použitie jeden z prístupov, ktoré sú popísané v tomto článku prenos údajov vo veľkom.

Pre viac informácií a pre príklad na automatizáciu Excel s programom Visual Basic.NET získate po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
301982Ako na automatizáciu Microsoft Excel z jazyka Visual Basic.NET

Použiť automatizáciu na prenos pole údajov na rozsah v pracovnom hárku

Pole údajov možno preniesť do rozsahu viacero buniek v rovnakom čase takto.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object

        'Start a new workbook in Excel.
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Create an array with 3 columns and 100 rows.
        Dim DataArray(99, 2) As Object
        Dim r As Integer
        For r = 0 To 99
            DataArray(r, 0) = "ORD" & Format(r + 1, "0000")
            DataArray(r, 1) = Rnd() * 1000
            DataArray(r, 2) = DataArray(r, 1) * 0.07
        Next

        'Add headers to the worksheet on row 1.
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = "Order ID"
        oSheet.Range("B1").Value = "Amount"
        oSheet.Range("C1").Value = "Tax"

        'Transfer the array to the worksheet starting at cell A2.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray

        'Save the Workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book2.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				
Ak prenos dát pomocou poľa namiesto jednotlivých bunkách si môžete uvedomiť obrovský výkon zisk s veľa údajov. Pouvažujte nad týmto riadok z predchádzajúcich kód, ktorý prenáša údaje do 300 bunky v hárku.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray
				
Tento riadok predstavuje dve rozhrania žiadosti: jeden pre Rozsah objekt, ktorý Rozsah metóda vracia, a druhý pre Rozsah objekt, ktorý Zmena veľkosti metóda vráti. Naopak, prenos údajov jednotlivých bunkách vyžaduje žiadostí pre 300 rozhrania Rozsah objekty. Kedykoľvek je to možné, môžete využiť prenos vaše údaje vo veľkom množstve znížiť počet žiadostí rozhrania môžete urobiť.

Použiť automatizáciu aplikácie na prevod množina záznamov súčasti ADO na rozsah pracovného hárka

Objektové modely pre program Excel 2000 a Excel 2002 poskytuje CopyFromRecordset metódu pre prenos množina záznamov súčasti ADO rozsah na Funkcia pracovného hárka. Nasledujúci kód ilustruje, ako automatizovať Excel na prenos obsah tabuľky objednávky vo vzorovej databáze Northwind pomocou CopyFromRecordset metóda.
        'Create a Recordset from all the records in the Orders table.
        Dim sNWind As String
        Dim conn As New ADODB.Connection()
        Dim rs As ADODB.Recordset
        conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            sNorthwind & ";")
        conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        rs = conn.Execute("Orders", , ADODB.CommandTypeEnum.adCmdTable)

        'Create a new workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)

        'Transfer the field names to Row 1 of the worksheet:
        'Note: CopyFromRecordset copies only the data and not the field
        '      names, so you can transfer the fieldnames by traversing the
        '      fields collection.
        Dim n As Int32
        For n = 1 To rs.Fields.Count
            oSheet.Cells(1, n).Value = rs.Fields(n - 1).Name
        Next

        'Transfer the data to Excel.
        oSheet.Range("A2").CopyFromRecordset(rs)

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book3.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()

        'Close the connection
        rs.Close()
        conn.Close()
				
Poznámka CopyFromRecordset funguje len s ADO Množina záznamov objekty. A Množina údajov že vytvoríte pomocou ADO.NET sa nedá používať s CopyFromRecordset metóda. Niekoľko príkladov v nasledujúcich častiach preukázať ako previesť údaje do programu Excel s ADO.NET.

Použiť automatizáciu aplikácie na vytvorenie objektu tabuľky dotazu v pracovnom hárku

A Tabuľky dotazu objekt predstavuje tabuľky, ktorá je postavená z údajov, ktoré je sa vrátil z externého zdroja údajov. Zatiaľ čo môžete automatizovať programu Excel, môžete vytvoriť a Tabuľky dotazu poskytnutím reťazec pripojenia OLEDB alebo ODBC údajov Zdroj a reťazec SQL. Program Excel vytvára množina záznamov a vloží množina záznamov do pracovného hárka na mieste, ktoré určíte. Pomocou Tabuľky dotazu objekty ponúka nasledujúce výhody nad CopyFromRecordset metóda:
  • Excel zvláda vytvorenie množina záznamov a jeho umiestnenie do pracovného hárka.
  • Dotaz môžete uložiť s Tabuľky dotazu objekt tak, že je možné obnoviť neskôr získať aktualizované množina záznamov.
  • Keď nový Tabuľky dotazu pridáva sa do pracovného hárka, môžete určiť, že údaje už existujúce v buniek v pracovnom hárku presunula prispôsobiť nové údaje (pozri RefreshStyle Vlastnosť pre podrobnosti).
Nasledujúci kód demonštruje, ako automatizovať Excel 2000 alebo 2002 na vytvorenie novej Tabuľky dotazu v pracovnom hárku programu Excel pomocou údajov zo vzorky Northwind databáza.
        'Create a new workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)

        'Create the QueryTable object.
        Dim oQryTable As Object
        oQryTable = oSheet.QueryTables.Add( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            sNorthwind & ";", oSheet.Range("A1"), _
            "Select * from Orders")
        oQryTable.RefreshStyle = 2 ' xlInsertEntireRows = 2
        oQryTable.Refresh(False)

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book4.xls")
        oQryTable = Nothing
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
				

Použitie schránky

Schránky môžete použiť na prenos údajov Funkcia pracovného hárka. Ak chcete prilepiť údaje do viacerých buniek na pracovnom hárku, môžete kopírovať reťazec v ktorom stĺpce sú oddelené znakmi tabulátora a riadky sú oddelené Autor: znakmi. Nasledujúci kód ilustruje ako Visual Basic.ČISTÉ využitie Schránky na prenos údajov do programu Excel.
        'Copy a string to the Clipboard.
        Dim sData As String
        sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
            & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
            & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
        System.Windows.Forms.Clipboard.SetDataObject(sData)

        'Create a workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Paste the data.
        oBook.Worksheets(1).Range("A1").Select()
        oBook.Worksheets(1).Paste()

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book5.xls")
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				

Vytvoriť súbor s oddeleným textom, ktorý program Excel môžete analyzovať do riadkov a stĺpcov

Program Excel môže otvoriť súbory s tabulátorom alebo s čiarkou a správne parse údaje do buniek. Túto funkciu môžete použiť, keď chcete preniesť hodně údajov do pracovného hárka pri používaní málo, ak vôbec, automatizácie. To môže byť dobrý prístup pre klient-server program, pretože môže byť textový súbor generované strane servera. Môžete otvoriť textový súbor na klienta pomocou Automatizácia, kde je to vhodné.

Nasledujúci kód ilustruje ako generovať tabulátormi textový súbor z údajov, ktoré je čítať s ADO.NET.
        'Connect to the data source.
        Dim objConn As New System.Data.OleDb.OleDbConnection( _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNorthwind & ";")
        objConn.Open()

        'Execute a command to retrieve all records from the Employees table.
        Dim objCmd As New System.Data.OleDb.OleDbCommand( _
            "Select * From Employees", objConn)
        Dim objReader As System.Data.OleDb.OleDbDataReader
        objReader = objCmd.ExecuteReader()

        'Read the records in the dataset and write select fields to the 
        'output file.
        FileOpen(1, sSampleFolder & "Book6.txt", OpenMode.Output)
        Dim i As Integer, s As String
        While objReader.Read()
            'Loop through first 6 fields and concatenate
            'each field, separated by a tab, into s variable.
            s = ""
            For i = 0 To 5
                If Not objReader.IsDBNull(i) Then
                    If i = 0 Then 'field 1 is EmployeeId
                        s = s & objReader.GetInt32(i).ToString
                    ElseIf i = 5 Then 'field 6 is BirthDate
                        s = s & objReader.GetDateTime(i)
                    Else 'field is a text field
                        s = s & objReader.GetString(i)
                    End If
                End If
                s = s & Microsoft.VisualBasic.ControlChars.Tab
            Next
            PrintLine(1, s)
        End While
        FileClose(1)

        'Close the reader and the connection.
        objReader.Close()
        objConn.Close()
				
Žiadne automatizácia bola použitá v predchádzajúci kód. Avšak, môžete použiť minimálny automatizácie otvorte textový súbor a uložiť súbor v programe Excel zošit formát.
        'Create a new instance of Excel.
        Dim oExcel As Object
        oExcel = CreateObject("Excel.Application")

        'Open the text file and save it in the Excel workbook format.
        oExcel.Workbooks.OpenText(sSampleFolder & "Book6.txt", _
            , , , -4142, , True) 'xlTextQualifierNone=-4142

        oExcel.ActiveWorkbook.SaveAs(sSampleFolder & "Book6.xls", _
            -4143) 'xlWorkbookNormal = -4143

        'Quit Excel.
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				

Prenos údajov do pracovného hárka pomocou ADO.NET

Poskytovateľa Microsoft Jet OLE DB môžete použiť na pridanie záznamov Tabuľka v existujúceho zošita programu Excel. "Tabuľka" v programe Excel je len rozsah buniek; rozsah môžu mať definovaný názov. Zvyčajne sa prvý riadok rozsahu obsahuje hlavičky (alebo názvy polí) a všetky neskôr riadkov v rozsahu obsahovať záznamy.

Nasledujúci kód pridá dve nové záznamy do tabuľky v Book7.xls. Tabuľka v tomto prípade je Hárok1.
       'Establish a connection to the data source.
        Dim sConnectionString As String
        sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & sSampleFolder & _
            "Book7.xls;Extended Properties=Excel 8.0;"
        Dim objConn As New System.Data.OleDb.OleDbConnection(sConnectionString)
        objConn.Open()

        'Add two records to the table.
        Dim objCmd As New System.Data.OleDb.OleDbCommand()
        objCmd.Connection = objConn
        objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
            " values ('Bill', 'Brown')"
        objCmd.ExecuteNonQuery()
        objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
            " values ('Joe', 'Thomas')"
        objCmd.ExecuteNonQuery()

        'Close the connection.
        objConn.Close()
				
Po pridaní záznamov s ADO.NET ako ukazuje, formátovanie zošit je zachovaná. Každý záznam, ktorý sa pridáva do riadka požičia formát od riadka pred ním. Napríklad nové polia, ktoré sú pridané do stĺpca b sú formátovaný pomocou zarovnanie vpravo, pretože bunky B1 je zarovnaný doprava.

Všimnite si, že keď záznam je pridaný do bunky alebo buniek v pracovnom hárku je Prepisuje všetky údaje, ktoré predtým obsahovali tieto bunky. Inými slovami, riadky v pracovnom hárku sú nie "tlačí" keď sú pridané nové záznamy. Držať v nevadí, keď navrhujete rozloženie údajov na vašich hárkoch Ak plánujete pomocou ADO vložiť nové záznamy.NET.

Ďalšie informácie o používaní ADO.NET získate po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
301075Ako pripojiť k databáze a spustiť príkaz pomocou ADO.NET a jazyka Visual Basic.NET
301216 Ako sa vyznačená DataSet objekt z databázy pomocou jazyka Visual Basic.NET
301248 Ako aktualizovať databázu z DataSet objektu pomocou jazyka Visual Basic.NET
Ďalšie informácie o používaní Jet OLE DB provider so Excel zdrojov údajov, kliknite na nasledovné číslo článku databázy Microsoft Knowledge Base:
278973ExcelADO ukazuje, ako používať ADO čítať a zapisovať údaje v zošitoch programu Excel
257819 Ako používať ADO s údajmi programu Excel z programu Visual Basic alebo VBA

Prenos údajov XML (len pre program Excel 2002)

Excel 2002 môžete otvoriť akýkoľvek súbor XML, ktorý je správne formátovaný. Súbory XML možno otvoriť priamo z Otvorené príkaz na Súbor ponuke alebo programovo s použitím buď Otvorené alebo OpenXML metódy Zošity Zbierka. Ak vytvárate súbory XML pre použitie v programe Excel, môžete tiež vytvoriť šablóny so štýlmi na formátovanie údajov.

Ďalšie informácie o používaní XML s Excel 2002, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
307021Ako previesť údaje XML na program Microsoft Excel 2002 pomocou jazyka Visual Basic.NET
288215 Program Microsoft Excel 2002 a XML

Vytvoriť Úplná vzorka jazyka Visual Basic.ČISTÝ projektu

  1. Vytvorte nový priečinok držať zošity programu Excel, vzorka bude vytvoriť pre vás a potom názov priečinka C:\Exceldata\.
  2. Chcete vytvoriť nový zošit do vzorky, postupujte nasledovne zapisovať do:
    1. Spustenie nového zošita v programe Excel.
    2. Na Hárok1 nový zošit, zadajte KrstnéMeno v bunke A1 a Priezviskov bunke A2.
    3. Uložiť zošit ako C:\Exceldata\Book7.xls.
  3. Spustiť Visual Studio.NET. Na Súbor ponuky, kliknite na tlačidlo Nové a potom kliknite na tlačidlo Project. Podľa Projektov programu Visual Basic, vyberte Windows aplikácie. Predvolene je vytvorená Form1.
  4. Pridať odkaz na Objektová knižnica programu Excel. Na to, postupujte nasledovne:
    1. Na Project ponuky, kliknite na tlačidlo Pridať odkaz.
    2. Na COM kartu, vyhľadajte Objektová knižnica programu Microsoft Excel 10.0, a potom kliknite na tlačidlo Vyberte.

      Poznámka: Ak ste tak ešte neurobili, spoločnosť Microsoft odporúča, aby ste Prevezmite a potom nainštalujte Microsoft Office XP Primary Interop Assemblies (PIA). Ďalšie informácie o Office XP Pia, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
      328912Microsoft Office XP primary objektovému assemblies (PIA) sú k dispozícii na prevzatie
    3. Na COM kartu, vyhľadajte Microsoft ActiveX Dátová knižnica objektov 2.7, a potom kliknite na tlačidlo Vyberte.
    4. Kliknite na položku ok v Pridať odkazy dialógové okno prijímať vaše výbery. Ak sa zobrazí výzva na generovať medzivrstva pre knižnice, ktorý ste vybrali, kliknite na tlačidlo Yes.
  5. Pridať Rozbaľovacie pole kontroly a Tlačidlo kontroly Form1;
  6. Pridať nasledujúci kód do Form1.
        Const sSampleFolder = "C:\ExcelData\"
        Const sNorthwind = "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
          Handles MyBase.Load
            ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
            Dim aList As String() = _
                {"Use Automation to Transfer Data Cell by Cell ", _
                 "Use Automation to Transfer an Array of Data to a Range on a Worksheet ", _
                 "Use Automation to Transfer an ADO Recordset to a Worksheet Range ", _
                 "Use Automation to Create a QueryTable on a Worksheet", _
                 "Use the Clipboard", _
                 "Create a Delimited Text File that Excel Can Parse into Rows and Columns", _
                 "Transfer Data to a Worksheet Using ADO.NET "}
            ComboBox1.Items.AddRange(aList)
            ComboBox1.SelectedIndex = 0
            Button1.Text = "Go!"
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
          Handles Button1.Click
            Select Case ComboBox1.SelectedIndex
                Case 0 : Automation_CellByCell()
                Case 1 : Automation_UseArray()
                Case 2 : Automation_ADORecordset()
                Case 3 : Automation_QueryTable()
                Case 4 : Use_Clipboard()
                Case 5 : Create_TextFile()
                Case 6 : Use_ADONET()
            End Select
            GC.Collect()
        End Sub
    
        Private Function Automation_CellByCell()
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
    
            'Start a new workbook in Excel.
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Add data to cells of the first worksheet in the new workbook.
            oSheet = oBook.Worksheets(1)
            oSheet.Range("A1").Value = "Last Name"
            oSheet.Range("B1").Value = "First Name"
            oSheet.Range("A1:B1").Font.Bold = True
            oSheet.Range("A2").Value = "Doe"
            oSheet.Range("B2").Value = "John"
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book1.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Automation_UseArray()
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
    
            'Start a new workbook in Excel.
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Create an array with 3 columns and 100 rows.
            Dim DataArray(99, 2) As Object
            Dim r As Integer
            For r = 0 To 99
                DataArray(r, 0) = "ORD" & Format(r + 1, "0000")
                DataArray(r, 1) = Rnd() * 1000
                DataArray(r, 2) = DataArray(r, 1) * 0.07
            Next
    
            'Add headers to the worksheet on row 1.
            oSheet = oBook.Worksheets(1)
            oSheet.Range("A1").Value = "Order ID"
            oSheet.Range("B1").Value = "Amount"
            oSheet.Range("C1").Value = "Tax"
    
            'Transfer the array to the worksheet starting at cell A2.
            oSheet.Range("A2").Resize(100, 3).Value = DataArray
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book2.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Automation_ADORecordset()
            'Create a Recordset from all the records in the Orders table.
            Dim sNWind As String
            Dim conn As New ADODB.Connection()
            Dim rs As ADODB.Recordset
            conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                sNorthwind & ";")
            conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
            rs = conn.Execute("Orders", , ADODB.CommandTypeEnum.adCmdTable)
    
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
            oSheet = oBook.Worksheets(1)
    
            'Transfer the field names to Row 1 of the worksheet:
            'Note: CopyFromRecordset copies only the data and not the field
            '      names, so you can transfer the fieldnames by traversing the
            '      fields collection.
            Dim n As Int32
            For n = 1 To rs.Fields.Count
                oSheet.Cells(1, n).Value = rs.Fields(n - 1).Name
            Next
    
            'Transfer the data to Excel.
            oSheet.Range("A2").CopyFromRecordset(rs)
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book3.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
    
            'Close the connection.
            rs.Close()
            conn.Close()
        End Function
    
        Private Function Automation_QueryTable()
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
            oSheet = oBook.Worksheets(1)
    
            'Create the QueryTable object.
            Dim oQryTable As Object
            oQryTable = oSheet.QueryTables.Add( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                sNorthwind & ";", oSheet.Range("A1"), _
                "Select * from Orders")
            oQryTable.RefreshStyle = 2 ' xlInsertEntireRows = 2
            oQryTable.Refresh(False)
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book4.xls")
            oQryTable = Nothing
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
    
    
            oExcel = Nothing
    
        End Function
    
        Private Function Use_Clipboard()
            'Copy a string to the clipboard.
            Dim sData As String
            sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
                & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
                & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
            System.Windows.Forms.Clipboard.SetDataObject(sData)
    
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Paste the data.
            oBook.Worksheets(1).Range("A1").Select()
            oBook.Worksheets(1).Paste()
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book5.xls")
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Create_TextFile()
            'Connect to the data source.
            Dim objConn As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNorthwind & ";")
            objConn.Open()
    
            'Run a command to retrieve all records from the Employees table.
            Dim objCmd As New System.Data.OleDb.OleDbCommand( _
                "Select * From Employees", objConn)
            Dim objReader As System.Data.OleDb.OleDbDataReader
            objReader = objCmd.ExecuteReader()
    
            'Read the records in the dataset and write select fields to the 
            'output file.
            FileOpen(1, sSampleFolder & "Book6.txt", OpenMode.Output)
            Dim i As Integer, s As String
            While objReader.Read()
                'Loop through first 6 fields and concatenate
                'each field, separated by a tab, into s variable.
                s = ""
                For i = 0 To 5
                    If Not objReader.IsDBNull(i) Then
                        If i = 0 Then 'field 1 is EmployeeId
                            s = s & objReader.GetInt32(i).ToString
                        ElseIf i = 5 Then 'field 6 is BirthDate
                            s = s & objReader.GetDateTime(i)
                        Else 'field is a text field
                            s = s & objReader.GetString(i)
                        End If
                    End If
                    s = s & Microsoft.VisualBasic.ControlChars.Tab
                Next
                PrintLine(1, s)
            End While
            FileClose(1)
    
            'Close the reader and the connection.
            objReader.Close()
            objConn.Close()
    
            'Create a new instance of Excel.
            Dim oExcel As Object
            oExcel = CreateObject("Excel.Application")
    
            'Open the text file and save it in the Excel workbook format.
            oExcel.Workbooks.OpenText(sSampleFolder & "Book6.txt", _
                , , , -4142, , True) 'xlTextQualifierNone=-4142
    
            oExcel.ActiveWorkbook.SaveAs(sSampleFolder & "Book6.xls", _
                -4143) 'xlWorkbookNormal = -4143
    
            'Quit Excel.
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Use_ADONET()
    
            'Verify that the workbook to write to does exist.
            Dim sFile As String = sSampleFolder & "Book7.xls"
            If Dir(sFile) = "" Then
                MsgBox("Please create the workbook Book7.xls and try again.")
                Exit Function
            End If
    
            'Establish a connection to the data source.
            Dim sConnectionString As String
            sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & sSampleFolder & _
                "Book7.xls;Extended Properties=Excel 8.0;"
            Dim objConn As New System.Data.OleDb.OleDbConnection(sConnectionString)
            objConn.Open()
    
            'Add two records to the table named 'MyTable'.
            Dim objCmd As New System.Data.OleDb.OleDbCommand()
            objCmd.Connection = objConn
            objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
                " values ('Bill', 'Brown')"
            objCmd.ExecuteNonQuery()
            objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
                " values ('Joe', 'Thomas')"
            objCmd.ExecuteNonQuery()
    
            'Close the connection.
            objConn.Close()
        End Function
    					
    Poznámka: Ak ste nenainštalovali Office k predvolenému priečinku (C:\Program Files\Microsoft Office), zmeňte sNorthwind konštantné vzorka kódu zodpovedali vašej inštalácie cestu pre Databázu Northwind.mdb.

  7. Pridať nasledujúci kód do hornej časti Form1.vb.
    Imports Microsoft.Office.Interop
    					
  8. Stlačením klávesu F5 vybudovať a potom spustite vzorky.

ODKAZY

Pre viac informácií navštívte nasledujúce Microsoft Developer Webová lokalita spoločnosti Network (MSDN):
http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10) .aspx
Ďalšie informácie získate po kliknutí na nasledujúce číslo článku databázy Microsoft Knowledge Base:
247412Metódy prenosu údajov do programu Excel z programu Visual Basic

Vlastnosti

ID článku: 306022 - Posledná kontrola: 31. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kľúčové slová: 
kbautomation kbhowtomaster kbmt KB306022 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:306022

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com