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:
216400
(http://support.microsoft.com/kb/216400/
)
Cross 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:
301982
(http://support.microsoft.com/kb/301982/
)
Cara 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:
301075
(http://support.microsoft.com/kb/301075/
)
Cara menyambung ke database dan menjalankan perintah dengan menggunakan ADO.NET dan Visual Basic.NET
301216
(http://support.microsoft.com/kb/301216/
)
Cara mengisi DataSet objek dari database dengan menggunakan Visual Basic.NET
301248
(http://support.microsoft.com/kb/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:
278973
(http://support.microsoft.com/kb/278973/
)
ExcelADO menunjukkan bagaimana menggunakan ADO untuk membaca dan menulis data dalam Excel Workbook
257819
(http://support.microsoft.com/kb/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:
307021
(http://support.microsoft.com/kb/307021/
)
Bagaimana untuk mentransfer XML data ke Microsoft Excel 2002 dengan menggunakan Visual Basic.NET
288215
(http://support.microsoft.com/kb/288215/
)
Microsoft Excel 2002 dan XML
Membuat sampel lengkap Visual Basic.Proyek NET
- Buat folder baru untuk menahan buku kerja Excel yang
contoh akan membuat untuk Anda, dan kemudian nama folder C:\Exceldata\.
- Ikuti langkah berikut untuk membuat buku kerja baru untuk sampel
untuk menulis ke:
- Mulai buku kerja baru di Excel.
- Pada Sheet1 dari buku kerja baru, ketik Nama depan dalam sel A1 dan Nama belakangdalam sel A2.
- Simpan buku kerja sebagai C:\Exceldata\Book7.xls.
- 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.
- Menambahkan referensi ke perpustakaan objek Excel. Untuk melakukan hal ini,
Ikuti langkah berikut:
- Pada Project menu, klik Menambahkan referensi.
- 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:328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP utama interop Majelis (PIAs) tersedia untuk di-download
- Pada COM tab, Cari Objek Microsoft ActiveX Data 2.7 perpustakaan, lalu klik Pilih.
- 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.
- Tambahkan Combo Box kontrol dan Tombol mengontrol Form1.
- 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.
- Menambahkan kode berikut ke atas Form1.vb.
Imports Microsoft.Office.Interop
- Tekan F5 untuk membangun dan kemudian menjalankan sampel.