Jak přenést data do sešitu aplikace Excel pomocí jazyka Visual Basic.NET

Překlady článku Překlady článku
ID článku: 306022 - Produkty, které se vztahují k tomuto článku.
Pro aplikace Microsoft Visual C#.NET verzi tohoto článku, naleznete v tématu 306023.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje několik metod přenos dat do aplikace Excel 2002 prostřednictvím jazyka Visual Basic.NET program. V tomto článku také představuje výhody a nevýhody jednotlivých metod, takže je možné Zvolte řešení nejvhodnější pro vaši situaci.

Přehled

Technika, která se nejčastěji používá k přenosu dat do Je sešit aplikace Excel Automatizace. Při automatizaci můžete volat metody a vlastnosti, které jsou zvláštní úkoly v aplikaci Excel. Automatizace poskytuje největší flexibilitu pro určení umístění dat v sešitu a možnost formátování sešit a provádět různá nastavení při spuštění.

Při automatizaci, k přenosu dat můžete použít několik technik:
  • Přenos dat buňky.
  • Přenos dat v matici do oblasti buněk.
  • Přenos dat v objektu ADO recordset na oblast buněk pomocí CopyFromRecordset Metoda.
  • Vytvoření Tabulky dotazu Objekt listu aplikace Excel, který obsahuje výsledek dotazu na zdroji dat ODBC nebo OLEDB.
  • Přenos dat do schránky a vložte obsah schránky do listu aplikace Excel.
Můžete také použít několik metod, které nemusí být nutně vyžadovat automatizace k přenosu dat do aplikace Excel. Pokud používáte server-side program, může se jednat o dobrý přístup pro přijetí hromadného zpracování dat. od klientů.

Tyto přístupy mohou být použity k přenos dat bez automatizace:
  • Přenos dat na kartě nebo čárkami oddělený textový soubor aplikace Excel lze analyzovat později do buněk na listu.
  • Převod dat do listu pomocí objektů ADO.NET.
  • Převod dat XML do aplikace Excel (pouze verze 2002) poskytovat data, která je formátována a uspořádána do řádků a sloupců.

Techniky

Automatizace slouží k přenosu dat buňky

Při automatizaci lze převádět data do jedné buňky listu v čas, způsobem.
        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()
				
Přenos dat buňky může být přijatelný přístup, pokud existuje není množství dat k přenosu. Máte možnost ukládat data kdekoli sešit a můžete formátovat buňky podmíněně za běhu. Ale to postup se nedoporučuje, máte-li velké množství dat do aplikace Excel sešit. Každý Rozsah objekt můžete získat v době běhu výsledkem rozhraní požadavek. Přenos dat tímto způsobem proto může být pomalé.
Navíc Systém Microsoft Windows 95, Microsoft Windows 98 a Microsoft Windows Millennium Požadavky rozhraní Edition (Me) platí omezení 64 KB. Máte-li 64 KB nebo více rozhraní požaduje přestat automatizační server (Excel) reagovat nebo se mohou zobrazit chybové zprávy, které označují nedostatek paměti. Další informace získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
216400Křížový proces automatizace modelu COM, můžete zavěsit klientská aplikace na Win95/98
Opět je přijatelné přenosu dat buňky pouze pro malé množství dat. Pokud musíte přenést velké datové sady do aplikace Excel, Zvažte použití jednoho z postupů, které jsou zmíněny v tomto článku k přenosu dat volně ložené.

Další informace a příklad automatizace aplikace Excel pomocí jazyka Visual Basic.NET získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
301982Jak automatizovat aplikaci Microsoft Excel z aplikace Visual Basic.NET

Použít automatizace pole dat do oblasti na listu

Pole dat může být přenesen do oblasti více buněk v době, způsobem.
        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()
				
Je-li přenos dat pomocí matice namísto buňky, Zjistíte-li zisku ohromným výkonu s velkým množstvím dat. Zvažte to řádek z dřívější kódu, který přenáší data do 300 buněk v listu.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray
				
Tento řádek představuje dva požadavky rozhraní: jeden pro Rozsah objekt, který Rozsah Metoda vrátí a jiný pro Rozsah objekt, který Změna velikosti Metoda vrátí. Naopak přenos dat buňky vyžaduje požadavky pro 300 rozhraní Rozsah objekty. Je to možné, můžete využít výhod přenos data v hromadných a snížení počtu požadavků rozhraní provedete.

Použít automatizace objektu ADO recordset do oblasti listu

Poskytují objektových modelů aplikace Excel 2000 a Excel 2002 CopyFromRecordset Metoda přenosu objektu ADO recordset na oblast na list. Následující kód ilustruje, jak automatizovat aplikaci Excel převést obsah tabulky objednávky v ukázkové databázi Northwind pomocí CopyFromRecordset Metoda.
        '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 pracuje pouze s objekty ADO Sady záznamů objekty. A Objekt DataSet vytvořit pomocí objektů ADO.NET nelze použít CopyFromRecordset Metoda. Několik příkladů v následujících částech prokázat jak přenést data do aplikace Excel s objekty ADO.NET.

Vytvoření objektu tabulky dotazu na listu pomocí automatizace

A Tabulky dotazu objekt představuje tabulku, která je sestaven z dat, která je vrácená z externího zdroje. Při automatizaci aplikace Excel můžete vytvořit do Tabulky dotazu poskytnutím řetězec připojení OLEDB, nebo dat ODBC zdroj a řetězec SQL. Aplikace Excel vytvoří sadu záznamů a vloží záznamů do listu v místě, které určíte. Použití Tabulky dotazu objekty nabízí následující výhody CopyFromRecordset Metoda:
  • Aplikace Excel zpracovává vytvoření sady záznamů a jeho umístění do listu.
  • Dotaz lze uložit s Tabulky dotazu objekt tak, že lze získat aktualizovaný aktualizovat později záznamů.
  • Když nový Tabulky dotazu je přidán do listu, můžete zadat data již existující v buňkách na listu posunuty tak, aby odpovídala nové údaje (viz RefreshStyle Vlastnost podrobnosti).
Následující kód ukazuje způsob automatizace aplikace Excel 2000 nebo 2002 pro vytvoření nového Tabulky dotazu v listu aplikace Excel pomocí dat z ukázkovou databází Northwind databáze.
        '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
				

Pomocí schránky

Schránky můžete použít k přenosu dat list. Chcete-li vložit data do více buněk na listu, můžete zkopírovat řetězec, ve kterém jsou sloupce odděleny tabulátory a jsou s oddělovači řádků podle konce. Následující kód ilustruje, jak aplikace Visual Basic.NET používá Schránka pro přenos dat do aplikace 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()
				

Vytvořit oddělený textový soubor, který aplikace Excel lze analyzovat do řádků a sloupců

Aplikace Excel můžete otevřít soubory tabulátory nebo čárkami a správně analyzovat data do buněk. Tuto funkci můžete použít, když chcete přenést šarže dat do listu při práci málo, automatizace. Může se jednat dobré přiblíží aplikace klient server, protože může být textový soubor generované na straně serveru. Potom můžete otevřít textový soubor na straně klienta pomocí Automatizace, kde je to vhodné.

Následující kód ilustruje jak z dat čtených s objekty ADO generování souboru text oddělený tabulátory.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()
				
V předchozím kódu byla použita žádná automatizace. Můžete však použít minimální automatizace textový soubor otevřít a uložit soubor v aplikaci Excel Formát sešitu způsobem.
        '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()
				

Přenos dat do listu pomocí objektů ADO.NET

Zprostředkovatele Microsoft Jet OLE DB můžete použít k přidání záznamů tabulky v sešitu aplikace Excel. "Tabulka", v aplikaci Excel je pouze oblast buňky; oblast může obsahovat definovaný název. Obvykle z prvního řádku oblasti obsahuje záhlaví (nebo názvy polí) a všechny vyšší řádky v rozsahu obsahují záznamy.

Následující kód přidá dva nové záznamy do tabulky Book7.xls. V tabulce v tomto případě je List1.
       '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 přidání záznamů ADO.NET, jak je znázorněno, formátování sešit je zachována. Každý záznam, který je přidán do řádku vypůjčí formát z řádku před ním. Jsou například nová pole, které jsou přidány do sloupce b Zarovnání doprava formátován, protože buňky B1 je zarovnán doprava.

Všimněte si, že při přidání záznamu do buňky nebo buňky v listu, přepíše všechna data, která tyto buňky dříve obsažena. Jinými slovy řádky v listu není "stlačí" při přidávání nových záznamů. To v úvahu při navrhování rozložení dat listu Pokud plánujete Vložení nových záznamů pomocí objektů ADO.NET.

Další informace o použití OBJEKTY ADO.NET, klepněte na tlačítko naleznete v následujících článcích znalostní báze společnosti Microsoft:
301075Jak se připojit k databázi a spustit příkaz pomocí objektů ADO.NET a Visual Basic.NET
301216 Jak naplnit objekt DataSet z databáze pomocí programu Visual Basic.NET
301248 Jak aktualizovat databázi z objektu DataSet pomocí jazyka Visual Basic.NET
Další informace o použití zprostředkovatele Jet OLE DB s Aplikace Excel zdroje dat, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
278973ExcelADO ukazuje způsob použití objektu ADO ke čtení a zápisu dat v sešitech aplikace Excel
257819 Použití objektů ADO s daty aplikace Excel z aplikace Visual Basic nebo VBA

Přenos dat XML (pouze aplikace Excel 2002)

Aplikace Excel 2002 můžete otevřít libovolný soubor XML, který je ve správném formátu. Soubory XML lze otevřít přímo Otevřít příkaz v Soubor nabídky, nebo programově pomocí buď Otevřít nebo OpenXML metody Sešity kolekce. Pokud vytváříte soubory XML pro použití v aplikaci Excel, můžete Vytvořte šablony stylů formátování data.

Další informace o používání XML aplikace Excel 2002 klepněte na tlačítko naleznete v následujících článcích znalostní báze společnosti Microsoft:
307021Jak přenést XML data do aplikace Microsoft Excel 2002 prostřednictvím jazyka Visual Basic.NET
288215 Aplikace Microsoft Excel 2002 a XML

Vytvořte celý vzorek jazyka Visual Basic.NET projektu

  1. Vytvořit novou složku k uložení sešitů aplikace Excel, vzorek můžete vytvořit a klepněte na název složky C:\Exceldata\.
  2. Následujících kroků vytvořte nový sešit pro vzorek zápis do:
    1. Spustíte nový sešit aplikace Excel.
    2. V listu List1 nového sešitu zadejte následující příkaz: Jméno v buňce A1 a Příjmenív buňce A2.
    3. Uložte sešit jako C:\Exceldata\Book7.xls.
  3. Spusťte aplikaci Visual Studio.NET. V Soubor nabídky, klepněte na tlačítko Nový a potom klepněte na tlačítko Projekt. Ve skupinovém rámečku Projekty jazyka Visual Basic, vyberte Aplikace systému Windows. Ve výchozím nastavení je vytvořen formulář Form1.
  4. Přidáte odkaz na knihovnu objektů aplikace Excel. K tomu, postupujte takto:
    1. V Projekt nabídky, klepněte na tlačítko Přidat odkaz.
    2. V COM karta, vyhledejte Knihovna objektů Microsoft Excel 10.0a klepněte na tlačítko Vybrat.

      Poznámka: Pokud jste tak již neučinili, doporučuje společnost Microsoft vám Stáhněte a nainstalujte Microsoft Office XP primární definiční sestavení (PIA). Další informace o sestaveních PIA sady Office XP získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
      328912Microsoft Office XP primární sestavení InterOp (PIA) jsou k dispozici ke stažení
    3. V COM karta, vyhledejte Microsoft ActiveX Data Objects 2.7 knihovnya klepněte na tlačítko Vybrat.
    4. Klepněte na tlačítko OK v Přidat odkazy Dialogové okno potvrďte výběr. Pokud se zobrazí výzva k generování obálky pro vybrané knihovny, klepněte na tlačítko Ano.
  5. Přidat Pole se seznamem řízení a Tlačítko řízení do formuláře Form1.
  6. Následující kód přidejte do formuláře 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: Pokud jste nenainstalovali sadu Office do výchozí složky (C:\Program Files\Microsoft Office), změnit sNorthwind konstanta v ukázce kódu tak, aby odpovídala vaší Instalační cesta Databázi Northwind.mdb.

  7. Přidejte následující kód na začátek Form1.vb.
    Imports Microsoft.Office.Interop
    					
  8. Stisknutím klávesy F5 vytvořte a spusťte vzorku.

Odkazy

Další informace naleznete na následujících Microsoft Developer Webový server společnosti Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa188489 (office.10) .aspx
Další informace získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
247412Metody přenosu dat do aplikace Excel z aplikace Visual Basic

Vlastnosti

ID článku: 306022 - Poslední aktualizace: 18. května 2011 - Revize: 8.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Excel 2002 Standard Edition
Klíčová slova: 
kbautomation kbhowtomaster kbmt KB306022 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:306022

Dejte nám zpětnou vazbu

 

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