Làm th? nào đ? s? d?ng ADO.NET đ? l?y và thay đ?i các b?n ghi trong m?t b?ng tính Excel v?i Visual Basic.NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 316934 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này bàn v? cách b?n có th? s? d?ng ADO.NET đ? L?y d? li?u t? m?t Microsoft Excel workbook, s?a đ?i các d? li?u trong m?t b?ng tính hi?n có, ho?c thêm d? li?u vào m?t b?ng tính m?i. Đ? truy c?p vào Excel Workbook v?i ADO.NET, b?n có th? s? d?ng nhà cung c?p máy bay ph?n l?c OLE DB; bài vi?t này cung c?p thông tin mà b?n c?n như v?y r?ng b?n có th? s? d?ng các nhà cung c?p máy bay ph?n l?c OLE DB khi Excel là ngu?n d? li?u m?c tiêu.

Làm th? nào đ? s? d?ng nhà cung c?p máy bay ph?n l?c OLE DB v?i Microsoft Excel Workbook

Cơ s? d? li?u Microsoft ph?n l?c có th? truy c?p d? li?u khác đ?nh d?ng t?p cơ s? d? li?u, ch?ng h?n như Excel Workbook, thông qua có th? cài đ?t Indexed Tr?nh đi?u khi?n truy c?p phương pháp (ISAM) tu?n t?. Đ? m? bên ngoài các đ?nh d?ng đư?c h? tr? b?i các nhà cung c?p c?a Microsoft ph?n l?c 4,0 OLE DB, ch? đ?nh các lo?i h?nh cơ s? d? li?u trong các m? r?ng thu?c tính c?a k?t n?i. Các máy bay ph?n l?c OLE DB Provider h? tr? các cơ s? d? li?u ki?u sau cho Microsoft Excel Workbook:
Excel 3,0
Excel 4,0
Excel 5,0
Excel 8,0
LƯU ?: S? d?ng Excel 5.0 ngu?n cơ s? d? li?u ki?u cho Microsoft Excel 5,0 và 7,0 (95) sách bài t?p và s? d?ng Excel 8,0 ngu?n cơ s? d? li?u ki?u cho Microsoft Excel 8,0 (97), 9,0 (2000) và 10,0 sách bài t?p (2002). Các ví d? ? đây bài vi?t s? d?ng Excel Workbook trong đ?nh d?ng Excel 2000 và Excel 2002.

K?t n?i chu?i

Đ? truy c?p vào m?t b?ng tính Excel b?ng cách s? d?ng các máy bay ph?n l?c OLE DB Provider, s? d?ng m?t k?t n?i chu?i có cú pháp sau:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;M? r?ng tài s?n = "tr?i 8,0;HDR = YES; "
Trong chu?i k?t n?i, ch? đ?y đ? đư?ng d?n và tên t?p cho workbook t?i các Ngu?n d? li?u tham s?. Các Thu?c tính m? r?ng tham s? có th? ch?a hai thu?c tính: m?t tài s?n cho ISAM Phiên b?n và m?t tài s?n đ? cho bi?t có hay không các table(s) bao g?m tiêu đ?.

V?i Excel Workbook, hàng đ?u tiên trong m?t ph?m vi là tiêu đ? hàng (ho?c l?nh v?c tên) theo m?c đ?nh. N?u ph?m vi đ?u tiên không ch?a thông tin thư, b?n có th? ch? HDR \u003d không vào các tài s?n m? r?ng trong chu?i k?t n?i c?a b?n. N?u b?n ch? đ?nh HDR \u003d không trong chu?i k?t n?i, các nhà cung c?p máy bay ph?n l?c OLE DB t? đ?ng đ?t tên các trư?ng cho b?n (F1 đ?i di?n cho trư?ng đ?u tiên, F2 đ?i di?n cho th? hai l?nh v?c này, và do đó trên).

Lo?i d? li?u

Không gi?ng như m?t cơ s? d? li?u truy?n th?ng, đó là không có cách nào tr?c ti?p đ? xác đ?nh các lo?i d? li?u cho c?t trong Excel b?ng. Thay vào đó, các nhà cung c?p OLE DB quét Tám hàng trong m?t c?t đ? đoán các d? li?u nh?p cho trư?ng. B?n có th? thay đ?i s? hàng đ? quét b?ng cách xác đ?nh giá tr? t? m?t (1) và mư?i sáu (16) cho các MAXSCANROWS thi?t l?p trong các thu?c tính m? r?ng c?a chu?i k?t n?i c?a b?n.

Quy ư?c đ?t tên b?ng

Có m?t s? cách b?n có th? tham kh?o m?t b?ng (ho?c nhi?u) trong m?t Excel workbook:
  • S? d?ng b?ng tên sau đó là m?t d?u hi?u đ?ng đô la (ví d?, [Sheet1$] hay [c?a tôi $ Worksheet]). M?t b?ng tính b?ng đư?c tham chi?u ? đây cách bao g?m ph?m vi toàn b? đư?c s? d?ng b?ng tính.
    Ch?n * t? [Sheet1$]
  • S? d?ng m?t lo?t v?i tên đư?c xác đ?nh (ví d?, [MyNamedRange]):
    Ch?n * t? [MyNamedRange]
  • S? d?ng m?t t?m ho?t đ?ng v?i m?t đ?a ch? c? th? (ví d?, [Sheet1$ A1: B10]):
    Ch?n * t? [Sheet1$ A1: B10]
LƯU ?: K? hi?u đôla theo b?ng tên là d?u hi?u là b?ng t?n t?i. N?u b?n đang t?o m?t b?ng m?i, như đư?c th?o lu?n trong các T?o sách bài t?p m?i và các b?ngph?n c?a bài vi?t này, không dùng k? hi?u đôla.

Làm th? nào đ? s? d?ng Excel Workbook như ADO.Ngu?n d? li?u NET

L?y h? sơ

B?n có th? l?y h? sơ t? cơ s? d? li?u b?ng cách s? d?ng m?t trong hai phương pháp ti?p c?n trong ADO.NET: v?i m?t S? li?u ho?c v?i m?t DataReader.

Một S? li?u là m?t b? nh? cache c?a các h? sơ L?y t? m?t ngu?n d? li?u. Các d? li?u trong các S? li?u thư?ng là m?t gi?m nhi?u phiên b?n c?a nh?ng g? có trong cơ s? d? li?u. Tuy nhiên, b?n có th? làm vi?c v?i nó gi?ng như cách b?n làm vi?c v?i các th?c t? d? li?u và v?n c?n b? ng?t k?t n?i t? cơ s? d? li?u th?c t?. Bên c?nh đó d? li?u truy, b?n c?ng có th? s? d?ng m?t S? li?u đ? th?c hi?n các ho?t đ?ng c?p nh?t v? các ti?m ?n cơ s? d? li?u.

Ngoài ra, b?n có th? s? d?ng m?t DataReader đ? l?y m?t d?ng ch?-đ?c, ch? có chuy?n ti?p c?a các d? li?u t? m?t cơ s? d? li?u. Khi b?n s? d?ng các DataReader làm tăng hi?u su?t c?a chương tr?nh, và h? th?ng trên cao là gi?m b?i v? ch? có m?t hàng t?i m?t th?i gian bao gi? h?t trong b? nh?. N?u b?n có m?t s? lư?ng l?n d? li?u l?y và b?n không có ? thay đ?i đ? các ti?m ?n cơ s? d? li?u, m?t DataReader là m?t s? l?a ch?n t?t hơn so v?i m?t S? li?u.

Thêm và C?p Nh?t h? sơ

V?i ADO.NET, b?n có th? chèn và c?p nh?t các b?n ghi trong m?t trong workbook m?t trong ba cách:
  • Tr?c ti?p ch?y l?nh đ? chèn ho?c C?p Nh?t h? sơ m?t lúc m?t th?i gian. Đ? th?c hi?n vi?c này, b?n có th? t?o ra m?t OLEDbCommand đ?i tư?ng c?a b?n k?t n?i và thi?t l?p c?a nó CommandText b?t đ?ng s?n cho m?t l?nh h?p l? đ? chèn h? sơ

    INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')
    ho?c m?t câu l?nh đ? c?p nh?t h? sơ

    UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'
    và sau đó g?i nh?ng ExecuteNonQuery phương pháp.
  • Th?c hi?n thay đ?i cho m?t S? li?u b?n đ? đi?n v?i m?t b?ng/truy v?n t? m?t b?ng tính Excel và sau đó g?i nh?ng Cập nhật phương pháp c?a các DataAdapter đ? gi?i quy?t nh?ng thay đ?i t? s? li?u v? the workbook. Tuy nhiên, đ? s? d?ng các Cập nhật phương pháp cho s? thay đ?i đ? phân gi?i b?n ph?i đ?t vec l?nh Đ?i v?i DataAdapter InsertCommand
    INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
    UpdateCommand:
    UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?
    Parameterized CHÈN và C?p Nh?t l?nh là c?n thi?t, v? các OleDbDataAdapter không cung c?p thông tin khóa/ch? m?c cho Excel Workbook; N?u không có khóa/ch? s? l?nh v?c, CommandBuilder không th? t? đ?ng t?o ra các l?nh cho b?n.
  • Xu?t kh?u d? li?u t? m?t ngu?n d? li?u vào m?t b?ng tính Excel cung c?p r?ng các ngu?n d? li?u khác có th? đư?c s? d?ng v?i các máy bay ph?n l?c OLE DB Provider. D? li?u ngu?n mà b?n có th? s? d?ng v?i các máy bay ph?n l?c OLE DB Provider theo cách này bao g?m T?p tin văn b?n, cơ s? d? li?u Microsoft Access, và d? nhiên, các sách bài t?p Excel. V?i m?t đơn đưa vào l?nh, b?n có th? xu?t d? li?u t? bàn khác/truy v?n vào b?ng tính c?a b?n:
    INSERT INTO [Sheet1$] IN 'C:\Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"
    CHÈN vào đ?i h?i r?ng m?c tiêu b?ng (ho?c b?ng tính) đ? t?n t?i; d? li?u đư?c g?n vào b?ng m?c tiêu.

    B?n c?ng có th? s? d?ng CH?N...INTO đ? xu?t kh?u b?ng/truy v?n c?a b?n sang m?t workbook:
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
    Khi b?n s? d?ng l?a ch?n...INTO, n?u m?c tiêu b?ng ho?c b?ng tính không t?n t?i, nó s? đư?c t?o ra cho b?n. N?u b?ng đ? t?n t?i trư?c khi các CH?N...VÀO l?nh đư?c ban hành, b?n s? nh?n đư?c m?t l?i.
Các M?u m?ph?n sau này trong bài vi?t này minh ho? m?i ngư?i trong s? nh?ng cách ti?p c?n đ? thêm và C?p nh?t các b?n ghi trong m?t b?ng tính.

Xoá b?n ghi

M?c dù các máy bay ph?n l?c OLE DB Provider cho phép b?n chèn và C?p Nh?t h? sơ trong m?t b?ng tính Excel, nó không cho phép xóa các ho?t đ?ng. N?u b?n c? g?ng đ? th?c hi?n m?t ho?t đ?ng xoá b? vào m?t ho?c nhi?u h? sơ, b?n nh?n đư?c dư?i đây thông báo l?i:
Xoá d? li?u trong m?t b?ng đư?c liên k?t không ph?i là h? tr? b?i ISAM này.
H?n ch? này là c? h?u trong vi?c đi?u tr? c?a Excel Workbook như cơ s? d? li?u.

T?o sách bài t?p và các b?ng

Đ? t?o ra m?t b?ng trong m?t b?ng tính Excel, ch?y t?o b?ng l?nh:
CREATE TABLE Sheet1 (F1 char(255), F2 char(255))
Khi b?n ch?y l?nh này, m?t b?ng tính m?i đư?c t?o ra v?i tên c?a b?ng b?n ch? đ?nh trong l?nh. N?u b?ng tính cho k?t n?i không không t?n t?i, nó quá s? đư?c t?o ra.

Các M?u m? ph?n minh ho? cách b?n có th? s? d?ng l?nh t?o b?ng đ? t?o ra m?t b?ng tính m?i và b?ng.

T?ng bư?c

M?u m?

  1. B?t đ?u m?t m?i Visual Basic.NET ?ng d?ng Windows d? án.

    Form1 đư?c t?o ra theo m?c đ?nh.
  2. Thêm sáu RadioButton đi?u khi?n và m?t nút đi?u khi?n đ? Form1.
  3. Ch?n t?t c? các đi?u khi?n RadioButton và thi?t l?p các Kích thước b?t đ?ng s?n đ? 200,24.
  4. Trên các Xem tr?nh đơn, nh?p vào Mã.
  5. Thêm d?ng sau vào đ?u r?t c?a m? Module:
    Imports System.Data.OleDb
  6. Chèn đo?n m? sau vào các H?nh th?c l?p:
    Private m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData1.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData2.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sNorthwind = _
          "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    
    Private m_sAction As String
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          RadioButton1.Text = "Create_Workbook"
          RadioButton2.Text = "Retrieve_Records"
          RadioButton3.Text = "Add_Records"
          RadioButton4.Text = "Update_Records"
          RadioButton5.Text = "Update_Individual_Cells"
          RadioButton6.Text = "Use_External_Source"
          Button1.Text = "Go!"
    End Sub
    
    Private Sub RadioButtons_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
          Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click, _
          RadioButton4.Click, RadioButton5.Click, RadioButton6.Click
          m_sAction = sender.Text'Store the text for the selected radio button
    End Sub
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          Try
             ' Call the associated routine to add/update/modify the workbook.
             Select Case m_sAction
                Case "Create_Workbook" : Create_Workbook()
                Case "Retrieve_Records" : Retrieve_Records()
                Case "Add_Records" : Add_Records()
                Case "Update_Records" : Update_Records()
                Case "Update_Individual_Cells" : Update_Individual_Cells()
                Case "Use_External_Source" : Use_External_Source()
             End Select
    
          Catch ex As OleDbException
             Dim er As OleDbError
             For Each er In ex.Errors
                MsgBox(er.Message)
             Next
          Catch ex2 As System.InvalidOperationException
             MsgBox(ex2.Message)
          End Try
    
    
    End Sub
    
    Public Sub Create_Workbook()
    
          ' If the workbooks already exist, prompt to delete.
          Dim answer As MsgBoxResult
          If Dir("C:\ExcelData1.xls") <> "" Or Dir("C:\ExcelData2.xls") <> "" Then
              answer = MsgBox("Delete existing workbooks (C:\ExcelData1.xls and " & _
                       "C:\ExcelData2.xls)?", MsgBoxStyle.YesNo)
              If answer = MsgBoxResult.Yes Then
                  If Dir("C:\ExcelData1.xls") <> "" Then Kill("C:\ExcelData1.xls")
                  If Dir("C:\ExcelData2.xls") <> "" Then Kill("C:\ExcelData2.xls")
              Else
                  Exit Sub
              End If
          End If
    
    '==========================================================================
          ' Create a workbook with a table named EmployeeData. The table has 3 
          ' fields: ID (char 255), Name (char 255) and Birthdate (date).  
    '==========================================================================
          Dim conn As New OleDbConnection()
          conn.ConnectionString = m_sConn1
          conn.Open()
          Dim cmd1 As New OleDbCommand()
          cmd1.Connection = conn
          cmd1.CommandText = "CREATE TABLE EmployeeData (Id char(255), Name char(255), BirthDate date)"
          cmd1.ExecuteNonQuery()
          cmd1.CommandText = "INSERT INTO EmployeeData (Id, Name, BirthDate) values ('AAA', 'Andrew', '12/4/1955')"
          cmd1.ExecuteNonQuery()
          conn.Close()
    
    '==========================================================================
          ' Create a workbook with a table named InventoryData. The table has 3 
          ' fields: Product (char 255), Qty (float) and Price (currency). 
    '==========================================================================
    
          conn.ConnectionString = m_sConn2
          conn.Open()
          Dim cmd2 As New OleDbCommand()
          cmd2.Connection = conn
          cmd2.CommandText = "CREATE TABLE InventoryData (Product char(255), Qty float, Price currency)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Cola', 200, 1.35)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Chips', 550, 0.89)"
          cmd2.ExecuteNonQuery()
          conn.Close()
    
          ' NOTE: You can ALTER and DROP tables in a similar fashion.
    
    End Sub
    
    Public Sub Retrieve_Records()
    
          '==========================================================
          'Use a DataReader to read data from the EmployeeData table.
          '==========================================================
    
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd1 As New System.Data.OleDb.OleDbCommand("Select * From [EmployeeData$]", conn1)
          Dim rdr As OleDbDataReader = cmd1.ExecuteReader
    
          Debug.WriteLine(vbCrLf & "EmployeeData:" & vbCrLf & "=============")
          Do While rdr.Read()
             Debug.WriteLine(System.String.Format("{0,-10}{1, -15}{2}", _
                rdr.GetString(0), rdr.GetString(1), _
                rdr.GetDateTime(2).ToString("d")))
          Loop
          rdr.Close()
          conn1.Close()
    
          '========================================================
          'Use a DataSet to read data from the InventoryData table.
          '========================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds)
          Debug.WriteLine(vbCrLf & "InventoryData:" & vbCrLf & "==============")
          Dim dr As DataRow
          For Each dr In ds.Tables(0).Rows'Show results in output window
             Debug.WriteLine(System.String.Format("{0,-15}{1, -6}{2}", _
                dr("Product"), dr("Qty"), dr("Price")))
          Next
          conn2.Close()
    
    End Sub
    
    Public Sub Add_Records()
    
    '==========================================================================
          ' Run an INSERT INTO command to add new records to the workbook. 
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('CCC', 'Charlie', '10/14/48')"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('DDD', 'Deloris', '7/19/98')"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          'Use the InsertCommand object to add new records to the InventoryData
          'table.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyExcelTable")
    
          ' Generate the InsertCommand and add the parameters for the command.
          da.InsertCommand = New OleDbCommand( _
             "INSERT INTO [InventoryData$] (Product, Qty, Price) VALUES (?, ?, ?)", conn2)
          da.InsertCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
          da.InsertCommand.Parameters.Add("@Qty", OleDbType.Double).SourceColumn = "Qty"
          da.InsertCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
    
          ' Add two new records to the dataset.
          Dim dr As DataRow
          dr = ds.Tables(0).NewRow
          dr("Product") = "Bread" : dr("Qty") = 390 : dr("Price") = 1.89 : ds.Tables(0).Rows.Add(dr)
          dr = ds.Tables(0).NewRow
          dr("Product") = "Milk" : dr("Qty") = 99 : dr("Price") = 2.59 : ds.Tables(0).Rows.Add(dr)
    
          ' Apply the dataset changes to the actual data source (the workbook).
          da.Update(ds, "MyExcelTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Records()
    
    '==========================================================================
          ' Run an UPDATE command to change a record in the EmployeeData
          ' table.
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "UPDATE [EmployeeData$] " & _
                        "SET NAME = 'Aaron', BirthDate = '5/4/1975' WHERE ID = 'AAA'"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          ' Use the UpdateCommand object to modify records in the InventoryData
          ' table.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyInventoryTable")
    
          ' Generate the UpdateCommand and add the parameters for the command.
          da.UpdateCommand = New OleDbCommand( _
             "UPDATE [InventoryData$] SET Qty = ?, Price=? WHERE Product = ?", conn2)
          da.UpdateCommand.Parameters.Add("@Qty", OleDbType.Numeric).SourceColumn = "Qty"
          da.UpdateCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
          da.UpdateCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
    
          ' Update the first two records.
          ds.Tables(0).Rows(0)("Qty") = 1000
          ds.Tables(0).Rows(0)("Price") = 10.1
          ds.Tables(0).Rows(1)("Qty") = 2000
          ds.Tables(0).Rows(1)("Price") = 20.2
    
          ' Apply the dataset changes to the actual data source (the workbook).
          da.Update(ds, "MyInventoryTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Individual_Cells()
    
    '==========================================================================
          ' Update individual cells on the EmployeeData worksheet; 
          ' specifically, cells F3, G3, and I4 are modified.
    '==========================================================================
    
          ' NOTE: The connection string indicates that the table does *NOT* 
          ' have a header row.
          Dim conn As New System.Data.OleDb.OleDbConnection(m_sConn1.Replace("HDR=YES", "HDR=NO"))
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
          cmd.CommandText = "UPDATE [EmployeeData$F3:G3] SET F1 = 'Cell F3', F2 = 'Cell G3'"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "UPDATE [EmployeeData$I4:I4] SET F1 = 'Cell I4'"
          cmd.ExecuteNonQuery()
          conn.Close()
    
    End Sub
    
    Public Sub Use_External_Source()
    
          ' Open a connection to the sample Northwind Access database.
          Dim conn As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_sNorthwind & ";")
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
    
    '=======================================================================
          ' Run an INSERT..INTO command on the Northwind database to append 
          ' the records from a table/query to an existing table in the Excel 
          ' workbook.
    '=======================================================================
          cmd.CommandText = "INSERT INTO [EmployeeData$] IN 'C:\ExcelData1.xls' 'Excel 8.0;'" & _
             "SELECT EmployeeID AS ID, FirstName AS Name, BirthDate FROM Employees"
          cmd.ExecuteNonQuery()
    
    '==========================================================================
          ' Run a SELECT..INTO command on the Northwind database to insert 
          ' all the records from a table/query into a new sheet in the Excel 
          ' workbook.
    '==========================================================================
          cmd.CommandText = "SELECT * INTO [Excel 8.0;Database=C:\ExcelData2.xls].[ProductSales]" & _
                          "FROM [Product Sales for 1997]"
          cmd.ExecuteNonQuery()
    
          conn.Close()
    
    End Sub
  7. S?a đ?i các đư?ng d?n đ?n cơ s? d? li?u Access c?a m?u, Northwind, Đ?i v?i các thành viên m_sNorthwind trong các m?, n?u c?n thi?t.

Dùng th?

  1. Trên các Xem tr?nh đơn, đi?m đ?n Các c?a s? khác, sau đó b?m Đ?u ra đ? hi?n th? các Đ?u ra c?a s?.
  2. Nh?n F5 đ? xây d?ng và ch?y chương tr?nh.
  3. Nh?p vào Create_Workbook sau đó b?m Đi. Các Create_Workbook th? t?c ch?y t?o b?ng l?nh đ? t?o ra hai m?i sách bài t?p: C:\ExcelData1.xls và C:\ExcelData2.xls. ExcelData1.xls ch?a m?t t? (b?ng) tên là EmployeeData và ExcelData2.xls ch?a m?t t? (b?ng) đư?c đ?t tên InventoryData. Các b?ng đư?c làm đ?y v?i các h? sơ.

    LƯU ?: T?i m?i bư?c c?n l?i trong th? nghi?m này, m? các sách bài t?p trong Excel đ? ki?m tra k?t qu?. Ho?c, nh?p vào Retrieve_Records đ? xem n?i dung c?a table(s) trong các Đ?u ra C?a s? c?a ph?ng thu tr?c quan.NET.
  4. Nh?p vào Retrieve_Records sau đó b?m Đi. Các Retrieve_Records th? t?c ch?t chi?t xu?t t? các h? sơ t? các b?ng và hi?n th? chúng trong các Đ?u ra c?a s?, tương t? như này:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
  5. Nh?p vào Add_Records sau đó b?m Đi. Các Add_Records thói quen cho bi?t thêm hai h? sơ cho m?i b?ng:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
    Bread          390   1.89
    Milk           99    2.59
  6. Nh?p vào Update_Records sau đó b?m Đi. Các Update_Records thói quen C?p nh?p hai ghi trong m?i b?ng tính:
    EmployeeData:
    =============
    AAA       Aaron          5/4/1975
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           1000  10.1
    Chips          2000  20.2
    Bread          390   1.89
    Milk           99    2.59
  7. Nh?p vào Update_Individual_Cells sau đó b?m Đi. Các Update_Individual_Cells thói quen đ?i c? th? các t? bào trên b?ng tính EmployeeData trong ExcelData1.xls; c? th?, các t? bào F3, G3 và I4 đư?c C?p Nh?t.
  8. Nh?p vào Use_External_Source sau đó b?m Đi. Khi b?n s? d?ng m?t CHÈN...VÀO l?nh, các Use_External_Source thói quen n?i h? sơ t? Northwind b?ng 'Nhân viên' đ? b?ng tính EmployeeData trong ExcelData1.xls. Và, Use_External_Source s? d?ng m?t ch?n...VÀO l?nh đ? t?o ra m?t b?ng m?i (ho?c t?) trong ExcelData2.xls có ch?a t?t c? các b?n ghi t? b?ng Northwind 'S?n ph?m'.

    LƯU ?: N?u b?n Click vào Use_External_Source nhi?u hơn m?t th?i gian, danh sách nhân viên s? đư?c ph? thêm nhi?u th?i gian do các khóa chính không đư?c công nh?n ho?c thi hành.

Di đ?ng đ?nh d?ng

N?u b?n đang s? d?ng ADO.NET đ? thêm ho?c C?p Nh?t h? sơ trong m?t hi?n có b?ng tính, b?n có th? áp d?ng di đ?ng đ?nh d?ng, đ? b?ng tính s? đư?c s? d?ng v?i các h? sơ m?i ho?c C?p Nh?t. Khi b?n C?p Nh?t m?t k? l?c hi?n có (hay hàng) trong m?t b?ng tính, di đ?ng đ?nh d?ng đư?c gi? l?i. Và khi b?n chèn m?t k? l?c m?i (ho?c hàng) trong m?t b?ng tính, k? l?c th?a hư?ng đ?nh d?ng t? d?ng ? trên nó.

Th? t?c sau đây cho th?y cách b?n có th? s? d?ng đ?nh d?ng trong m?t b?ng tính v?i m?u m?:
  1. Nh?n F5 đ? xây d?ng và ch?y các m?u.
  2. Ngày Form1, nh?p vào Create_Workbook sau đó b?m Đi.
  3. B?t đ?u Microsoft Excel và m? C:\ExcelData1.xls.
  4. Áp d?ng m?t lo?i phông đ?m cho t? bào A2.
  5. Áp d?ng m?t nghiêng, g?ch dư?i phong cách đ?n t? bào B2 và align Trung tâm.
  6. Áp d?ng m?t đ?nh d?ng ngày tháng đ?y đ? cho các t? bào C2.
  7. Lưu và đóng C:\ExcelData1.xls.
  8. Ngày Form1, nh?p vào Add_Records sau đó b?m Đi.
  9. M? C:\ExcelData1.xls trong Excel và nh?n th?y r?ng hai m?i hàng đ? th?a k? các đ?nh d?ng t? hàng đ?u.

H?n ch?

Dư?i đây là m?t s? h?n ch? c?a các máy bay ph?n l?c OLE DB Provider trong liên quan đ?n d? li?u Excel ngu?n:
  • B?n không th? chèn công th?c trong các t? bào b?ng cách s? d?ng ADO.NET.
  • Các máy bay ph?n l?c OLE DB Provider là không th? cung c?p khóa/ch? m?c thông tin cho các b?ng trong m?t b?ng tính Excel. V? l? do này, b?n không th? s? d?ng CommandBuilder đ? t? đ?ng t?o ra b?n C?p Nh?t và insertions Records trong m?t b?ng tính Excel.

THAM KH?O

Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
316756PRB: L?i x?y ra khi b?n s? d?ng ADO.NET OLEDbDataAdapter đ? s?a đ?i Excel Workbook
257819 Làm th? nào đ? s? d?ng ADO v?i d? li?u Excel t? Visual Basic ho?c VBA
306022 Làm th? nào đ? chuy?n d? li?u vào m?t b?ng tính Excel b?ng cách s? d?ng Visual Basic.NET
306023 Làm th? nào đ? chuy?n d? li?u đ?n m?t Excel B?ng tính b?ng cách s? d?ng Visual C#.NET
311731 Cách Truy v?n và hi?n th? Excel d? li?u b?ng cách s? d?ng ASP.NET, ADO.NET và Visual Basic .NET
306572 Cách Truy v?n và hi?n th? Excel d? li?u b?ng cách s? d?ng ASP.NET, ADO.NET, và Visual C# .NET
278973 M?U: ExcelADO ch?ng t? làm th? nào đ? s? d?ng ADO đ? đ?c và ghi d? li?u trong Excel Workbook

Thu?c tính

ID c?a bài: 316934 - L?n xem xét sau cùng: 23 Tháng Chín 2011 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
T? khóa: 
kbhowtomaster kbmt KB316934 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:316934

Cung cấp Phản hồi

 

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