Bu adım adım makalede, verileri bir Visual Basic .NET programından Excel 2002'ye aktarmak için birkaç yöntem açıklanır. Durumunuza en uygun çözüm seçebilmeniz makalede avantajları ve dezavantajları her yöntemi de sunar.
GENEL BAKIŞ
Bir Excel çalışma kitabına veri aktarmak için en sık kullanılan yöntem
Automation ' dir. Otomasyon ile yöntemler ve özellikler Excel görevlere özgü çağırabilirsiniz. Otomasyon çalışma kitabı ve çalışma kitabını biçimlendirmek ve zamanında çeşitli ayarları yapmak verilerinizi konumunu belirtmek için en fazla esnekliği sağlar.
Otomasyon ile veri aktarmak için çeşitli teknikler kullanabilirsiniz:
- <a1>Veri</a1> tarafından hücrenin hücre aktarın.
- Dizideki veri, bir hücre aralığına aktarın.
- ADO kayıt kümesindeki verileri CopyFromRecordset yöntemini kullanarak, bir hücre aralığına aktarın.
- OLEDB ya da ODBC veri kaynağı üzerinde sorgu sonuçlarını içeren bir Excel çalışma sayfasında bir sorgu tablosu oluşturun.
- Panoya veri aktarımı ve Pano içeriğini bir Excel çalışma sayfasına yapıştırın.
Ayrıca, verileri Excel'e aktarmak Otomasyon gerektirmeyebilecek birkaç yöntem kullanabilirsiniz. Sunucu tarafında çalışan bir program çalıştırıyorsanız, bu veri işleme istemcilerinizin uzağa toplu alma için iyi bir yaklaşım olabilir.
Otomasyon olmadan verilerinizi aktarmak için aşağıdaki yaklaşımlardan kullanılabilir:
- Verilerinizi Excel daha sonra ayrıştırabilir sekme veya virgülle sınırlandırılmış metin dosyası için çalışma sayfasındaki hücrelere aktarabilirsiniz.
- Verilerinizi ADO.NET kullanarak bir çalışma sayfasına aktarın.
- XML veri (yalnızca Sürüm 2002) Excel'e aktarma biçimlendirilmiş ve satırlar ve sütunlar düzenlendiği bir veri sağlamak için.
Teknikler
Tarafından hücrenin hücre veri aktarmak için Otomasyon kullanma
Otomasyon ile verileri tek bir çalışma sayfası hücresiyle aynı anda gibi aktarabilirsiniz.
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()
Kadar veri aktarmak için değilse, <a1>veri</a1> tarafından hücrenin hücre aktarımı kabul edilebilir bir yaklaşım olabilir. Verileri çalışma kitabında herhangi bir yere koymak esnekliği vardır ve hücreleri, çalışma zamanında koşullu olarak biçimlendirebilirsiniz. Çok miktarda bir Excel'e aktarmak için veri varsa, ancak bu yaklaşım önerilmez çalışma kitabı. Her
aralığı nesne zamanında Sunucusu'ndan bir arabirim isteğine oluşur. Bu nedenle, bu şekilde veri aktarımı yavaş olabilir.
Ayrıca, Microsoft Windows 95, Microsoft Windows 98 ve Microsoft Windows Millennium Edition (Me) arabirimi isteklerinde bir 64 KB sınırlaması vardır. 64 KB veya daha fazla arabirim istekleri, Otomasyon sunucusunu (Excel) yanıt vermeyebilir veya bellek belirten hata iletileri alabilirsiniz. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
216400
(http://support.microsoft.com/kb/216400/
)
Siteler arası işlem COM otomasyon istemci uygulaması Win95/98 askıda kalma
Yeniden tarafından hücrenin hücre veri aktarımı yalnızca küçük miktarda veri için kabul edilebilir;. Büyük veri kümeleri Excel'e Aktar toplu veri aktarmak için bu makalede anlatılan diğer yaklaşımdan birini kullanmayı.
Daha fazla bilgi için ve Visual Basic .NET ile Excel otomatikleştirmek bir örnek için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
301982
(http://support.microsoft.com/kb/301982/
)
Microsoft Excel Visual Basic .NET kullanarak otomatikleştirme
Veri dizisi için bir aralık çalışma sayfasına aktarmak için Otomasyon kullanma
Veri dizisi birden fazla hücre aralığına aynı zamanda aşağıdaki şekilde aktarılabilir.
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()
Hücrenin hücre yerine göre bir dizi kullanarak veri aktarımı, çok miktarda veri içeren bir aşırı büyük performans kazanç farkına. Bu satır, 300 çalışma sayfasındaki hücrelere veri aktarımları önceki kodundan göz önünde bulundurun.
oSheet.Range("A2").Resize(100, 3).Value = DataArray
Bu satır, iki arabirim istekleri temsil eder: bir
aralığı yöntemi veren
Aralık nesnesi, bir başka
aralığı nesneyi
yeniden boyutlandırma yöntemi döndürür. Buna ek olarak, tarafından hücrenin hücre veri aktarma istekleri 300 arabirimleri
aralığı nesnelere gerektirir. Mümkün olduğunda toplu veri aktarımı ve yaptığınız arabirimi isteklerin sayısını azaltmayı yararlanabilirsiniz.
Bir ADO kayıt kümesi için bir çalışma sayfası aralığı aktarmak için Otomasyon kullanma
Excel 2000 ve Excel 2002 için nesne modellerini
CopyFromRecordset bir ADO kayıt aralığı için bir çalışma sayfasına aktarma yöntemi sağlar. Aşağıdaki kod,
CopyFromRecordset yöntemini kullanarak, Northwind örnek veritabanındaki Orders tablosundaki içeriğini aktarmak için Excel otomatikleştirmek verilmektedir.
'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()
CopyFromRecordsetNot ADO
Recordset nesneleriyle çalışır. ADO.NET kullanarak oluşturduğunuz BIR
DataSetCopyFromRecordset yöntemi ile kullanılamaz. Izleyen bölümlerde, birkaç örnek veri ADO.NET ile Excel'e aktarma yöntemini gösterir.
Otomasyon çalışma sayfasında bir sorgu tablosu nesnesi oluşturmak için kullanın
Bir
sorgu tablosu nesnesi, bir dış veri kaynağından döndürülen verilerin yerleşik bir tablo gösterir. Excel'in otomatik olsa da, bir bağlantı dizesi bir OLEDB veya ODBC veri kaynağı ve bir SQL dizesi sağlayarak, bir
sorgu tablosu oluşturabilirsiniz. Excel, kayıt kümesini oluşturur ve kayıt kümesini, belirttiğiniz konumda çalışma sayfası ekler.
Sorgu tablosu nesneleri kullanarak
CopyFromRecordset yöntemine göre aşağıdaki avantajları sunar:
- Excel, recordset ve çalışma kitabına, bir yerleşim oluşturulmasını yönetir.
- Böylece, daha sonra güncelleştirilen bir recordset'i edinmek için yenilenmesi bu sorguyu sorgu tablosu nesnesi ile kaydedilir.
- Çalışma kitabınıza yeni bir sorgu tablosu eklendiğinde, önceden varolan çalışma sayfasındaki hücrelere veri (Ayrıntılar için RefreshStyle özelliği bakın) yeni verileri sığdırmak için kaydırılacağı uzaklık belirtebilirsiniz.
Aşağıdaki kod, Northwind örnek veritabanındaki verileri kullanarak bir Excel çalışma sayfasında, yeni bir
sorgu tablosu oluşturmak için Excel 2000 veya 2002 otomatikleştirmek gösterilmiştir.
'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
Pano kullanın.
Pano, bir çalışma sayfasına veri aktarmak için kullanabilirsiniz. Birden çok çalışma sayfasındaki hücrelere veri yapıştırmak için <a0></a0>, bir dize sütunları sekme karakterleriyle ayrılmış ve satır başlarını tarafından sınırlandırılır kopyalayabilirsiniz. Aşağıdaki kod, Visual Basic .NET pano verilerini Excel'e aktarmak için kullanma şeklini gösterir.
'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()
Excel, satırlar ve sütunlar ayrıştırabilir sınırlandırılmış metin dosyası oluşturun.
Excel dosyaları, sekmeyle sınırlı veya virgülle ayrılmış dosyalar'ı açın ve doğru verileri, hücrelere ayrıştırılamadı. Varsa, küçük Automation'ı kullanırken, çok miktarda veri çalışma sayfasına aktarmak istediğinizde, bu özelliği kullanabilirsiniz. Oluşturulan sunucu tarafındaki metin dosyası olduğundan, bu iyi bir yaklaşım, istemci-sunucu programı olabilir. Daha sonra uygun olan Otomasyonu'nu kullanarak istemcide metin dosyası da açabilirsiniz.
Aşağıdaki kod, ADO.NET ile okunan verileri sekme ile sınırlandırılmış metin dosyası oluşturmak verilmektedir.
'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()
No Otomasyon önceki kodu kullanıldı. Ancak, metin dosyası açtığınızda Excel dosyayı kaydetmek için en az Otomasyonu'nu kullanabilir aşağıdaki gibi çalışma kitabı biçimi.
'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()
ADO.NET kullanarak, bir çalışma sayfasına veri aktarımı
Varolan bir Excel çalışma kitabındaki bir tabloya kayıt eklemek için Microsoft Jet OLE DB Sağlayıcısı'nı kullanabilirsiniz. Excel'deki "Tablo" yalnızca bir hücre aralığıdır; aralığı, tanımlı bir ad olabilir. Genellikle, aralığın ilk satırındaki üstbilgileri (veya alan adları) içeren ve kayıtlar aralıktaki tüm sonraki satırlar içeriyor.
Aşağıdaki kod bir tabloda Book7.xls iki yeni kayıt ekler. Bu durumda tablo1 tablodur.
'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()
Kayıtları ADO.NET ile gösterilen eklediğinizde, çalışma kitabındaki biçimlendirme korunur. Her kayıt için bir satır eklenir, önceki satırın biçimini taşır. Örneğin, <a1>hücre</a1> B1 sağa hizalanmış olduğundan B sütununu eklenen yeni alanlar doğru hizalamayla biçimlendirilir.
Not bir hücre veya hücreleri çalışma sayfasında bir kayıt eklendiğinde, daha önce bu hücreleri içeren tüm verileri yazar. "Yeni kayıt eklendiğinde ba?ka bir deyi?le, çalışma sayfasındaki satırları itilir değil". Bu, ADO.NET kullanarak ekleme yeni kayıtlar düşünüyorsanız, çalışma sayfalarında veri düzenini tasarlarken göz önünde bulundurun.
ADO.NET kullanma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
301075
(http://support.microsoft.com/kb/301075/
)
Bir veritabanına bağlanmak ve ADO.NET ve Visual Basic .NET kullanarak bir komutu çalıştırmak için
301216
(http://support.microsoft.com/kb/301216/
)
Visual Basic. NET'i kullanarak bir veritabanındaki bir DataSet nesnesi doldurmak için
301248
(http://support.microsoft.com/kb/301248/
)
Visual Basic. NET'i kullanarak, bir <a0>DataSet</a0> nesnesinden bir veritabanını güncelleştirme
Excel veri kaynaklarıyla Jet OLE DB sağlayıcısı kullanma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
278973
(http://support.microsoft.com/kb/278973/
)
ExcelADO, Excel çalışma kitaplarındaki verileri okumak ve yazmak için ADO'nun nasıl kullanılacağını gösterir
257819
(http://support.microsoft.com/kb/257819/
)
Excel verilerinden Visual Basic'de veya VBA'DA ile ADO kullanma
XML veri (yalnızca Excel 2002) aktarımı
Excel 2002, iyi biçimlendirilmiş olan herhangi bir XML dosyası açabilirsiniz. XML dosyaları doğrudan
Aç komutuyla
Dosya menüsünden veya program aracılığıyla
Aç veya
Açık XMLçalışma kitaplarını koleksiyonunun yöntemlerle açabilirsiniz. Excel'de XML dosyaları oluşturursanız, verileri biçimlendirmek için stil sayfaları da oluşturabilirsiniz.
XML, Excel 2002 ile kullanma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
307021
(http://support.microsoft.com/kb/307021/
)
Nasıl yapılır: Visual Basic. NET'i kullanarak, XML verilerini Microsoft Excel 2002'ye aktarma
288215
(http://support.microsoft.com/kb/288215/
)
Microsoft Excel 2002 ve XML
Tam bir örnek Visual Basic .NET projesini oluşturma
- Örnek oluşturmasını ve sonra C:\Exceldata\ klasör adı, Excel çalışma kitaplarını saklamak için yeni bir klasör oluşturun.
- Yazmak örnek için yeni bir çalışma kitabı oluşturmak için şu adımları izleyin:
- Yeni bir çalışma kitabını, Excel'deki başlatın.
- Yeni bir çalışma kitabının Sayfa1 üzerinde <a1>hücre</a1> A1 ve A2 hücresindeki Soyadıadı yazın.
- Çalışma kitabını C:\Exceldata\Book7.xls kaydedin.
- Visual Studio .NET'i başlatın. Dosya menüsünde Yeni'yi tıklatın ve Project ' ı tıklatın. Visual Basic Projects altında Windows Application ' ı seçin. Varsayılan olarak, Form1 oluşturulur.
- Excel nesne kitaplığına bir başvuru ekleyin. Bunu yapmak için şu adımları izleyin:
- Proje) menüsünde Add Reference ' ı tıklatın.
- COM sekmesinde, Microsoft Excel 10.0 Nesne Kitaplığı ' nı bulun ve sonra da <a2>Seç</a2>'i tıklatın.
Not Önceden yapmadıysanız, Microsoft karşıdan yükleyin ve sonra Microsoft Office XP Primary ınterop Assemblies yükleyin önerir (Pıa). Office XP Pıa hakkında'daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP ana birlikte çalışma derlemeleri (PIA) karşıdan yüklenebilir
- COM sekmesinde, ActiveX Data Objects 2.7 kitaplığı ' nı bulun ve sonra da <a2>Seç</a2>'i tıklatın.
- Seçimlerinizi kabul etmek için Tamam <a0>Başvuru Ekle</a0> iletişim kutusunda tıklatın. Seçtiğiniz kitaplıklar için sar?c?lar? oluşturmak isteyen bir ileti alırsanız, Evet ' i tıklatın.
- Form1'e, bir Açılan kutu denetimi ve bir Düğme denetimi ekleyin.
- Form1'e aşağıdaki kodu ekleyin.
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
<a1>Not</a1> varsayılan klasöre (C:\Program Files\Microsoft Office), Office'i yüklemek, sNorthwind sabit kod örneğinde, yükleme yolu için Northwind.mdb eşleşecek şekilde değiştirin.
- Aşağıdaki kodu Form1.vb.
Imports Microsoft.Office.Interop
en üstüne ekleyin... - Oluşturmak ve örnek'ı çalıştırmak için F5 tuşuna basın.