Bagaimana untuk mentransfer data ke buku kerja Excel dengan menggunakan Visual Basic.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 306022 - Melihat produk di mana artikel ini berlaku.
Untuk Microsoft Visual C#.NET versi artikel ini, lihat 306023.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan beberapa metode untuk mentransfer data ke Excel 2002 dari Visual Basic.Program yang bersih. Artikel ini juga menyajikan kelebihan dan kekurangan masing-masing metode sehingga Anda dapat Pilih solusi yang terbaik untuk situasi Anda.

Sekilas pandang

Teknik yang paling sering digunakan untuk mentransfer data ke Buku kerja Excel adalah Otomatisasi. Dengan otomatisasi, Anda dapat memanggil metode dan properti yang khusus untuk tugas-tugas Excel. Otomatisasi memberikan fleksibilitas terbesar untuk menentukan lokasi data Anda dalam buku kerja, dan kemampuan untuk format buku kerja dan membuat berbagai pengaturan pada menjalankan waktu.

Dengan otomatisasi, Anda dapat menggunakan beberapa teknik untuk mentransfer data Anda:
  • Mentransfer data sel oleh sel.
  • Mentransfer data dalam array untuk kisaran sel.
  • Transfer data dalam recordset ADO ke kisaran sel oleh menggunakan CopyFromRecordset metode.
  • Membuat QueryTable objek pada lembar kerja Excel yang berisi hasil query pada ODBC atau OLEDB sumber data.
  • Mentransfer data ke clipboard, dan kemudian paste isi Clipboard ke lembar kerja Excel.
Anda juga dapat menggunakan beberapa metode yang tidak selalu memerlukan otomatisasi untuk mentransfer data ke Excel. Jika Anda menjalankan server-side program, ini dapat pendekatan yang baik untuk mengambil sebagian besar pengolahan data dari klien Anda.

Pendekatan berikut dapat digunakan untuk mentransfer data tanpa otomatisasi:
  • Mentransfer data ke tab atau koma-delimited file teks Excel yang kemudian dapat mengurai menjadi sel-sel pada lembar kerja.
  • Mentransfer data ke lembar kerja menggunakan ADO.NET.
  • Transfer XML data ke Excel (2002 hanya versi) untuk menyediakan data yang diformat dan diatur ke dalam baris dan kolom.

Teknik

Menggunakan otomatisasi untuk mentransfer data sel oleh sel

Dengan otomatisasi, Anda dapat mentransfer data ke lembar kerja satu sel di waktu, sebagai berikut.
        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()
				
Mentransfer data sel oleh sel dapat pendekatan yang dapat diterima jika ada ini tidak banyak data transfer. Anda memiliki fleksibilitas untuk memasukkan data di mana saja buku kerja dan dapat memformat sel kondisional pada jangka waktu. Namun, ini pendekatan ini tidak dianjurkan jika Anda memiliki banyak data untuk mentransfer ke Excel buku kerja. Setiap Kisaran objek yang Anda peroleh pada jangka waktu hasil pada antarmuka permintaan. Oleh karena itu, mentransfer data dengan cara ini bisa lambat.
Selain itu, Microsoft Windows 95, Microsoft Windows 98, dan Microsoft Windows Millennium Edition (Me) memiliki batasan 64 KB pada antarmuka permintaan. Jika Anda memiliki 64 KB atau lebih dari antarmuka permintaan, server Otomatisasi (Excel) mungkin berhenti merespons, atau Anda mungkin menerima pesan galat yang menunjukkan memori rendah. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
216400Cross COM Otomasi dapat menggantung aplikasi klien pada Win95/98
Sekali lagi, mentransfer data sel oleh sel diterima hanya untuk sejumlah kecil data. Jika Anda harus mentransfer data besar set ke Excel, Pertimbangkan untuk menggunakan salah satu pendekatan-pendekatan lain yang dibahas dalam artikel ini untuk mentransfer data dalam jumlah besar.

Untuk informasi lebih lanjut, dan untuk contoh cara untuk mengotomatisasi Excel dengan Visual Basic.NET, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
301982Cara mengotomatisasi Microsoft Excel dari Visual Basic.NET

Menggunakan otomatisasi untuk mentransfer sebuah array data ke berbagai pada lembar kerja

Array data dapat ditransfer ke kisaran sel yang beberapa pada saat yang sama, sebagai berikut.
        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()
				
Jika Anda mentransfer data dengan menggunakan sebuah array bukan sel-sel, Anda dapat menyadari keuntungan kinerja yang luar biasa dengan banyak data. Pertimbangkan ini garis dari kode sebelumnya, yang transfer data untuk 300 sel pada lembar kerja.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray
				
Baris ini mewakili dua antarmuka permintaan: satu untuk Kisaran objek yang Kisaran metode kembali, dan satu lagi untuk Kisaran objek yang Mengubah ukuran metode kembali. Sebaliknya, mentransfer data sel oleh sel memerlukan permintaan untuk 300 antarmuka untuk Kisaran objek. Bila mungkin, Anda dapat memperoleh manfaat dari mentransfer data dalam jumlah besar dan mengurangi jumlah permintaan antarmuka yang Anda buat.

Menggunakan otomatisasi untuk mentransfer ADO recordset ke berbagai lembar kerja

Menyediakan model objek untuk Excel 2000 dan Excel 2002 CopyFromRecordset metode untuk mentransfer ADO recordset ke berbagai pada lembar kerja. Kode berikut menggambarkan cara untuk mengotomatisasi Excel untuk mentransfer isi pesanan tabel dalam database contoh Northwind dengan menggunakan CopyFromRecordset metode.
        '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()
				
Catatan CopyFromRecordset bekerja hanya dengan ADO Recordset objek. A DataSet bahwa Anda buat dengan menggunakan ADO.NET tidak dapat digunakan dengan CopyFromRecordset metode. Beberapa contoh di bagian-bagian yang mengikuti demonstrasi bagaimana untuk mentransfer data ke Excel dengan ADO.NET.

Menggunakan otomatisasi untuk membuat QueryTable objek pada lembar kerja

A QueryTable objek mewakili meja yang dibangun dari data yang kembali dari sumber data eksternal. Sementara Anda mengotomatisasi Excel, Anda dapat membuat a QueryTable dengan menyediakan serangkaian sambungan untuk OLEDB atau data ODBC sumber dan SQL string. Excel menghasilkan recordset dan menyisipkan Recordset ke lembar kerja di lokasi yang Anda tentukan. Menggunakan QueryTable objek menawarkan keuntungan sebagai berikut CopyFromRecordset metode:
  • Excel menangani penciptaan recordset dan Penempatan ke lembar kerja.
  • Pertanyaan dapat disimpan dengan QueryTable objek jadi itu dapat menyegarkan kemudian memperoleh diperbarui Recordset.
  • Ketika baru QueryTable ditambahkan ke lembar kerja Anda, Anda dapat menentukan data yang sudah ada dalam sel pada lembar kerja bergeser sesuai data baru (lihat RefreshStyle properti untuk rincian).
Kode berikut menunjukkan cara untuk mengotomatisasi Excel 2000 atau 2002 untuk membuat yang baru QueryTable dalam lembar kerja Excel dengan menggunakan data dari sampel Northwind database.
        '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
				

Menggunakan Clipboard

Anda dapat menggunakan Clipboard untuk mentransfer data ke lembar kerja. Untuk menyisipkan data ke beberapa sel pada lembar kerja, Anda dapat menyalin string yang kolom yang dibatasi oleh karakter tab, dan baris yang dibatasi oleh kereta kembali. Kode berikut menggambarkan bagaimana Visual Basic.Menggunakan NET Clipboard untuk mentransfer data ke 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()
				

Membuat berkas berpembatas teks yang Excel dapat mengurai menjadi baris dan kolom

Excel dapat membuka tab-delimited file atau berkas berpembatas koma dan mengurai dengan benar data ke dalam sel. Anda dapat menggunakan fitur ini bila Anda ingin mentransfer banyak data untuk lembar kerja sementara menggunakan sedikit, jika ada, otomatisasi. Ini mungkin pendekatan yang baik untuk klien-server program, karena file teks dapat dihasilkan sisi server. Anda kemudian dapat membuka file teks pada klien, menggunakan Otomatisasi di tempat tepat.

Kode berikut menggambarkan cara menghasilkan file tab-delimited teks dari data yang dibaca dengan 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()
				
Otomatisasi tidak digunakan dalam kode sebelumnya. Namun, Anda dapat menggunakan Otomatisasi minimal untuk membuka file teks dan menyimpan berkas di Excel format buku kerja, sebagai berikut.
        '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()
				

Mentransfer data ke lembar kerja dengan menggunakan ADO.NET

Anda dapat menggunakan Microsoft Jet OLE DB penyedia untuk menambahkan catatan untuk Tabel di buku kerja Excel yang ada. "Meja" dalam Excel adalah hanya berbagai sel; kisaran mungkin memiliki nama yang ditetapkan. Biasanya, baris pertama dari kisaran berisi header (atau nama field), dan kemudian semua baris dalam kisaran berisi Catatan.

Kode berikut menambahkan dua baru catatan di meja Book7.xls. tabel dalam kasus ini adalah Sheet1.
       '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()
				
Ketika Anda menambahkan catatan dengan ADO.NET seperti ditunjukkan, format di buku kerja dipertahankan. Setiap catatan yang ditambahkan ke baris meminjam format dari baris sebelum itu. Sebagai contoh, Field baru yang ditambahkan ke kolom b adalah diformat dengan tepat kesejajaran karena sel B1 kanan-blok.

Perhatikan bahwa ketika sebuah record ditambahkan ke sel atau sel-sel pada lembar kerja, itu menimpa data apapun yang sel tersebut sebelumnya berisi. Dengan kata lain, baris dalam lembar kerja yang tidak "mendorong ke bawah" ketika rekor baru ditambahkan. Ingatlah ini pikiran ketika Anda merancang tata letak data pada lembar kerja Anda jika Anda berencana untuk Masukkan catatan baru dengan menggunakan ADO.NET.

Untuk informasi lebih lanjut tentang bagaimana menggunakan ADO.NET, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
301075Cara menyambung ke database dan menjalankan perintah dengan menggunakan ADO.NET dan Visual Basic.NET
301216 Cara mengisi DataSet objek dari database dengan menggunakan Visual Basic.NET
301248 Cara update database dari objek DataSet dengan menggunakan Visual Basic.NET
Untuk informasi lebih lanjut tentang bagaimana menggunakan penyedia Jet OLE DB dengan Excel sumber data, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
278973ExcelADO menunjukkan bagaimana menggunakan ADO untuk membaca dan menulis data dalam Excel Workbook
257819 Bagaimana menggunakan ADO dengan data Excel dari Visual Basic atau VBA

Mentransfer data XML (Excel 2002)

Excel 2002 dapat membuka file XML yang well-formed. File XML dapat dibuka langsung dari Terbuka perintah pada Berkas menu, atau pemrograman dengan menggunakan baik Terbuka atau OpenXML metode Buku kerja Koleksi. Jika Anda membuat file XML untuk digunakan di Excel, Anda dapat juga membuat style sheet untuk memformat data.

Untuk informasi lebih lanjut tentang cara menggunakan XML dengan Excel 2002, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
307021Bagaimana untuk mentransfer XML data ke Microsoft Excel 2002 dengan menggunakan Visual Basic.NET
288215 Microsoft Excel 2002 dan XML

Membuat sampel lengkap Visual Basic.Proyek NET

  1. Buat folder baru untuk menahan buku kerja Excel yang contoh akan membuat untuk Anda, dan kemudian nama folder C:\Exceldata\.
  2. Ikuti langkah berikut untuk membuat buku kerja baru untuk sampel untuk menulis ke:
    1. Mulai buku kerja baru di Excel.
    2. Pada Sheet1 dari buku kerja baru, ketik Nama depan dalam sel A1 dan Nama belakangdalam sel A2.
    3. Simpan buku kerja sebagai C:\Exceldata\Book7.xls.
  3. Mulai Visual Studio.NET. Pada Berkas menu, klik Baru kemudian klik Project. Di bawah Proyek-proyek Visual Basic, pilih Aplikasi Windows. Secara default, Form1 dibuat.
  4. Menambahkan referensi ke perpustakaan objek Excel. Untuk melakukan hal ini, Ikuti langkah berikut:
    1. Pada Project menu, klik Menambahkan referensi.
    2. Pada COM tab, Cari Perpustakaan objek Microsoft Excel 10,0, lalu klik Pilih.

      Catatan Jika Anda tidak melakukannya, Microsoft menyarankan Anda Download dan kemudian instal Microsoft Office XP utama Interop Majelis (PIAs). Untuk informasi lebih lanjut tentang Office XP PIAs, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
      328912Microsoft Office XP utama interop Majelis (PIAs) tersedia untuk di-download
    3. Pada COM tab, Cari Objek Microsoft ActiveX Data 2.7 perpustakaan, lalu klik Pilih.
    4. Klik Oke dalam Menambahkan referensi kotak dialog untuk menerima pilihan Anda. Jika Anda menerima prompt untuk menghasilkan pembungkus untuk perpustakaan yang Anda pilih, klik Ya.
  5. Tambahkan Combo Box kontrol dan Tombol mengontrol Form1.
  6. Tambahkan kode berikut untuk 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
    					
    Catatan Jika Anda tidak menginstal Office folder default (c: Program files Microsoft Office), mengubah sNorthwind konstan dalam sampel kode untuk mencocokkan jalan instalasi Anda untuk Northwind.mdb.

  7. Menambahkan kode berikut ke atas Form1.vb.
    Imports Microsoft.Office.Interop
    					
  8. Tekan F5 untuk membangun dan kemudian menjalankan sampel.

REFERENSI

Untuk informasi lebih lanjut, kunjungi berikut Microsoft Developer Situs Web Network (MSDN):
.aspx http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10)
Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
247412Metode untuk mentransfer data ke Excel dari Visual Basic

Properti

ID Artikel: 306022 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbautomation kbhowtomaster kbmt KB306022 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:306022

Berikan Masukan

 

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