Nasıl yapılır: Visual Basic. NET'i kullanarak, verileri bir Excel çalışma kitabına aktarma

Makale çevirileri Makale çevirileri
Makale numarası: 306022 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 306023.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

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:
216400Siteler 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:
301982Microsoft 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:
301075Bir veritabanına bağlanmak ve ADO.NET ve Visual Basic .NET kullanarak bir komutu çalıştırmak için
301216Visual Basic. NET'i kullanarak bir veritabanındaki bir DataSet nesnesi doldurmak için
301248Visual 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:
278973ExcelADO, Excel çalışma kitaplarındaki verileri okumak ve yazmak için ADO'nun nasıl kullanılacağını gösterir
257819Excel 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 komutuyla Dosya menüsünden veya program aracılığıyla 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:
307021Nasıl yapılır: Visual Basic. NET'i kullanarak, XML verilerini Microsoft Excel 2002'ye aktarma
288215Microsoft Excel 2002 ve XML

Tam bir örnek Visual Basic .NET projesini oluşturma

  1. Ö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.
  2. Yazmak örnek için yeni bir çalışma kitabı oluşturmak için şu adımları izleyin:
    1. Yeni bir çalışma kitabını, Excel'deki başlatın.
    2. Yeni bir çalışma kitabının Sayfa1 üzerinde <a1>hücre</a1> A1 ve A2 hücresindeki Soyadıadı yazın.
    3. Çalışma kitabını C:\Exceldata\Book7.xls kaydedin.
  3. 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.
  4. Excel nesne kitaplığına bir başvuru ekleyin. Bunu yapmak için şu adımları izleyin:
    1. Proje) menüsünde Add Reference ' ı tıklatın.
    2. 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:
      328912Microsoft Office XP ana birlikte çalışma derlemeleri (PIA) karşıdan yüklenebilir
    3. COM sekmesinde, ActiveX Data Objects 2.7 kitaplığı ' nı bulun ve sonra da <a2>Seç</a2>'i tıklatın.
    4. 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.
  5. Form1'e, bir Açılan kutu denetimi ve bir Düğme denetimi ekleyin.
  6. 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.

  7. Aşağıdaki kodu Form1.vb.
    Imports Microsoft.Office.Interop
    					
    en üstüne ekleyin...
  8. Oluşturmak ve örnek'ı çalıştırmak için F5 tuşuna basın.

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
247412Visual Basic Verilerini Excel'e Aktarma Yöntemleri

Özellikler

Makale numarası: 306022 - Last Review: 17 Ocak 2007 Çarşamba - Gözden geçirme: 6.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ADO.NET (included with the .NET Framework)
Anahtar Kelimeler: 
kbmt kbautomation kbhowtomaster KB306022 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:306022

Geri Bildirim Ver

 

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