كيفية استخدام ADO.NET لاسترداد وتعديل السجلات في مصنف Excel باستخدام Visual Basic.NET

ملخص

تتناول هذه المقالة كيفية استخدام ADO.NET لاسترداد بيانات من مصنف Microsoft Excel أو تعديل البيانات في مصنف موجود أو إضافة بيانات إلى مصنف جديد. للوصول إلى مصنفات Excel باستخدام ADO.NET, يمكنك استخدام موفر Jet OLE DB; توفر هذه المقالة المعلومات التي تحتاجها حتى أنه يمكنك استخدام موفر Jet OLE DB عندما يكون Excel مصدر البيانات الهدف.


كيفية استخدام موفر Jet OLE DB مع مصنفات Microsoft Excel

مشغل قاعدة بيانات Microsoft Jet الوصول إلى البيانات في قاعدة البيانات تنسيقات أخرى، مثل مصنفات Excel، من خلال برامج التشغيل التسلسلي أسلوب الوصول المفهرس (ISAM) للتثبيت. لفتح تنسيقات خارجية معتمدة من قبل Microsoft Jet 4.0 OLE DB الموفر، حدد نوع قاعدة البيانات في الخصائص الموسعة للاتصال. يدعم موفر Jet OLE DB أنواع قواعد البيانات التالية لمصنفات Microsoft Excel:
Excel 3.0
Excel 4.0
Excel 5.0
Excel 8.0
ملاحظة: استخدم نوع قاعدة بيانات مصدر Excel 5.0 مصنفات Microsoft Excel 5.0 و 7.0 (95) واستخدم نوع قاعدة بيانات مصدر Excel 8.0 ل Microsoft Excel 8.0 (97)، الإصدار 9.0 (2000) و 10.0 المصنفات (2002). تستخدم الأمثلة الموجودة في هذه المقالة مصنفات Excel بتنسيق Excel 2000 و Excel 2002.


سلسلة الاتصال

للوصول إلى مصنف Excel باستخدام موفر Jet OLE DB، استخدم سلسلة اتصال على بناء الجملة التالي:
Source=C:\Book1.xls Provider=Microsoft.Jet.OLEDB.4.0;Data؛ خصائص موسعة = "Excel 8.0; HDR = نعم؛ "
في سلسلة الاتصال، حدد اسم ومسار الملف الكامل للمصنف في مصدر بيانات المعلمة. قد تحتوي المعلمة الخصائص الموسعة على خاصيتين: خاصية لإصدار ISAM وخاصية للإشارة إلى أم لا جدول/جداول تتضمن الرؤوس.

في مصنفات Excel، يكون الصف الأول في نطاق صف الرأس (أو أسماء الحقول) افتراضياً. إذا كان النطاق الأول لا يحتوي على رؤوس، يمكنك تحديد HDR = NO في الخصائص الموسعة في سلسلة الاتصال الخاصة بك. إذا قمت بتحديد HDR = NO في سلسلة الاتصال، موفر Jet OLE DB تلقائياً أسماء الحقول لك (يمثل F1 الحقل الأول، يمثل F2 الحقل الثاني، وهكذا).

أنواع البيانات

بعكس قواعد بيانات عادية، لا توجد أية طريقة مباشرة لتحديد أنواع البيانات للأعمدة في جداول Excel. بدلاً من ذلك، فحص موفر OLE DB ثمانية صفوف في عمود توقع نوع البيانات للحقل. يمكنك تغيير عدد الصفوف المراد تفحصها بتحديد قيمة تتراوح بين واحد (1) وستة عشر (16) للإعداد MAXSCANROWS في الخصائص الموسعة لسلسلة الاتصال الخاصة بك.

اصطلاحات تسمية الجداول

هناك عدة طرق يمكنك الرجوع الجدول (أو نطاق) في مصنف Excel:
  • استخدم اسم الورقة متبوعاً بعلامة الدولار (على سبيل المثال، [Sheet1$] أو [My Worksheet$]). يتضمن جدول مصنف المشار إليه بهذه الطريقة النطاق المستخدم بالكامل في ورقة العمل.
    حدد * من [Sheet1$]
  • استخدام نطاق باسم معرف (على سبيل المثال، [ميناميدرانجي]):
    حدد * من [ميناميدرانجي]
  • استخدام نطاق بعنوان معين (على سبيل المثال، [Sheet1$ A1: B10]):
    حدد * من [Sheet1$ A1: B10]
ملاحظة: علامة الدولار بعد اسم ورقة العمل يعد مؤشرا على وجود الجدول. في حالة إنشاء جدول جديد، كما هو موضح في
جداول ومصنفات جديدة إنشاء قسم من هذه المقالة، لا تستخدم علامة الدولار.

كيفية استخدام مصنفات Excel كمصادر بيانات ado

استرداد السجلات

يمكنك استرداد السجلات من قاعدة بيانات باستخدام ADO.NET أحد النهجين: مجموعة البيانات أو مع DataReader.

مجموعة البيانات يتم تخزين مؤقت للسجلات التي تم استردادها من مصدر بيانات. البيانات في مجموعة البيانات عادة نسخة مصغرة جداً لما هو في قاعدة البيانات. ومع ذلك، يمكنك العمل معها بنفس الطريقة التي كنت تعمل مع البيانات الفعلية والاستمرار في انقطاع الاتصال من قاعدة البيانات الفعلية. بالإضافة إلى استرداد البيانات، يمكنك أيضا استخدام مجموعة البيانات لإجراء عمليات التحديث على قاعدة البيانات الأساسية.

بدلاً من ذلك، يمكنك استخدام DataReader استرداد دفق بيانات القراءة فقط أو للأمام فقط من قاعدة بيانات. عند استخدام برنامج DataReader ، زيادة في الأداء وفوق النظام يقلل أنه صف واحد فقط في مرة الواحدة من أي وقت مضى في الذاكرة. إذا كان لديك كمية كبيرة من البيانات لاسترداد ولم تكن تخطط لإجراء تغييرات على قاعدة البيانات الأساسية، DataReader خيار أفضل من مجموعة البيانات.

إضافة سجلات وتحديثها

باستخدام ADO.NET, يمكنك إدراج وتحديث السجلات بطريقة من ثلاث طرق:
  • تشغيل مباشرة أمر إدراج سجلات أو تحديثها واحد في مرة الواحدة. للقيام بذلك، يمكنك إنشاء كائن OLEDbCommand على الاتصال وتعيين الخاصية CommandText إلى أمر صحيح لإدراج السجلات

    INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')
    أو أمرا لتحديث السجلات

    UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'
    ثم قم باستدعاء الأسلوب ExecuteNonQuery .
  • إجراء تغييرات على مجموعة البيانات أن تعبئة بجدول/استعلام من ورقة عمل Excel، ثم قم باستدعاء أسلوب تحديث DataAdapter لحل التغييرات من مجموعة البيانات مرة أخرى إلى المصنف. ومع ذلك، ﻻستخدام أسلوب التحديث لتغيير القرار يجب تعيين ذات معلمات الأوامر ل DataAdapter InsertCommand
    INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
    و UpdateCommand:
    UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?
    الأوامر معلمات INSERT و UPDATE غير مطلوبة لأن OleDbDataAdapter لا توفر معلومات المفتاح/الفهرس لمصنفات Excel؛ دون/فهرس مفتاح الحقول، لا على CommandBuilder إنشاء الأوامر تلقائياً لك.
  • تصدير البيانات من آخر البيانات المصدر إلى مصنف Excel يجوز استخدام مصدر البيانات باستخدام موفر Jet OLE DB. تتضمن مصادر البيانات التي يمكنك استخدامها مع موفر Jet OLE DB بهذه الطريقة الملفات النصية وقواعد بيانات Microsoft Access، وبالطبع، مصنفات Excel الأخرى. باستخدام أمر INSERT INTO واحد، يمكنك تصدير البيانات من جدول/استعلام آخر إلى المصنف الخاص بك:
    INSERT INTO [Sheet1$] IN 'C:\Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"
    INSERT INTO يتطلب الجدول الهدف (أو ورقة العمل) موجودة بالفعل؛ يتم إلحاق البيانات بالجدول الهدف.

    يمكنك أيضا استخدام تحديد... INTO لتصدير الجدول/استعلام إلى مصنف:
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
    عند استخدام تحديد... في حالة عدم وجود المصنف أو الجدول الهدف، سيتم إنشائه لك. إذا كان الجدول موجود مسبقاً قبل التحديد... في إصدار الأمر، ستتلقى خطأ.
يوضح القسم نموذج التعليمات البرمجية لاحقاً في هذه المقالة كل من هذه الطرق لإضافة السجلات وتحديثها في مصنف.

حذف السجلات

على الرغم من أن موفر Jet OLE DB يسمح لك بإدراج السجلات وتحديثها في مصنف Excel، لا تسمح عمليات الحذف. إذا حاولت تنفيذ عملية حذف في سجل واحد أو أكثر، تتلقى رسالة الخطأ التالية:
حذف البيانات في جدول مرتبط غير معتمد من قبل ISAM هذا.
هذا التحديد متضمن في معالجة مصنفات Excel كقواعد بيانات.

إنشاء جداول ومصنفات

لإنشاء جدول في مصنف Excel، بتشغيل الأمر CREATE TABLE:
CREATE TABLE Sheet1 (F1 char(255), F2 char(255))
عند تشغيل هذا الأمر، يتم إنشاء ورقة عمل جديدة باسم الجدول التي تحددها في الأمر. في حالة عدم وجود المصنف للاتصال، سيتم إنشاؤه أيضا.

على
مقطع التعليمات البرمجية للنموذج يوضح كيف يمكنك استخدام الأمر CREATE TABLE لإنشاء مصنف جديد والجدول.

خطوة بخطوة

نموذج لتعليمة برمجية

  1. بدء تشغيل مشروع Visual Basic.NET تطبيقات Windows جديدة.

    يتم إنشاء Form1 افتراضياً.
  2. إضافة ستة عناصر الزر التبادلي وعنصر تحكم زر إلى Form1.
  3. حدد كافة عناصر تحكم زر اختيار وتعيين حجم الخاصية إلى 200, 24.
  4. في القائمة عرض ، انقر فوق الرمز.
  5. أضف السطر التالي إلى بداية الوحدة النمطية للتعليمات البرمجية:
    Imports System.Data.OleDb
  6. إدراج التعليمات البرمجية التالية في فئة النموذج :
    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. تعديل المسار للوصول إلى قاعدة بيانات، northwind النموذجية، ل m_sNorthwind عضو في التعليمات البرمجية، إذا لزم الأمر.

جربة

  1. من القائمة عرض ، أشر إلى Windows أخرىومن ثم انقر فوق إخراج لعرض نافذة الإخراج .
  2. اضغط F5 لإنشاء البرنامج وتشغيله.
  3. انقر فوق Create_Workbook ومن ثم انقر فوق انتقال. الإجراء Create_Workbook تشغيل الأوامر CREATE TABLE لإنشاء مصنفات جديدة اثنين: C:\ExcelData1.xls و C:\ExcelData2.xls. ExcelData1.xls يحتوي على ورقة واحدة (الجدول) يسمى امبلوييداتا و ExcelData2.xls يحتوي على ورقة واحدة (الجدول) يسمى إينفينتوريداتا. ويتم ملء الجداول بالسجلات.

    ملاحظة: في كل خطوة متبقية في هذا الاختبار، بفتح المصنفات في Excel لفحص النتائج. أو، انقر فوق Retrieve_Records لعرض محتويات جدول (جداول) في إخراج إطار من Visual Studio.NET.
  4. انقر فوق Retrieve_Records ومن ثم انقر فوق انتقال. الإجراء Retrieve_Records استخراج السجلات من الجداول وعرضها في نافذة الإخراج ، مشابهة لهذه:
    EmployeeData:
    =============
    AAA Andrew 12/4/1955

    InventoryData:
    ==============
    Cola 200 1.35
    Chips 550 0.89
  5. انقر فوق Add_Records ومن ثم انقر فوق انتقال. إضافة إجراء Add_Records اثنين من السجلات لكل جدول:
    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. انقر فوق Update_Records ومن ثم انقر فوق انتقال. تحديث روتين Update_Records اثنين من السجلات في كل مصنف:
    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. انقر فوق Update_Individual_Cells ومن ثم انقر فوق انتقال. تعديل روتين Update_Individual_Cells خلايا معينة في ورقة عمل امبلوييداتا في ExcelData1.xls؛ وبوجه خاص، يتم تحديث الخلايا F3 و G3 I4.
  8. انقر فوق Use_External_Source ومن ثم انقر فوق انتقال. عند استخدام عملية إدراج... في الأمر، إجراء Use_External_Source إلحاق السجلات من جدول "الموظفين" Northwind في ورقة العمل امبلوييداتا في ExcelData1.xls. ويستخدم Use_External_Source عبارة SELECT... في الأمر لإنشاء جدول جديد (أو ورقة) في ExcelData2.xls التي تحتوي على كافة السجلات من Northwind الجدول "منتجات".

    ملاحظة: إذا نقرت فوق Use_External_Source أكثر من مرة، قائمة الموظفين سيتم إلحاق عدة مرات نظراً لعدم التعرف على المفتاح الأساسي أو فرضها.

تنسيق الخلايا

إذا كنت تستخدم ADO.NET لإضافة سجلات أو تحديثها في مصنف موجود، يمكنك تطبيق تنسيق المصنف الذي سيتم استخدامه مع سجلات جديدة أو محدثة الخلايا. عندما تقوم بتحديث القائمة سجل (أو صف) في مصنف، يتم الاحتفاظ بتنسيق الخلايا. وعند إدراج سجل جديد (أو صف) في مصنف، يرث السجل الجديد التنسيق من الصف الذي يعلوه.

يوضح الإجراء التالي كيفية استخدام التنسيق في مصنف باستخدام نموذج التعليمة البرمجية:
  1. اضغط F5 لإنشاء وتشغيل العينة.
  2. فوق Form1، انقر فوق Create_Workbook ومن ثم انقر فوق انتقال.
  3. بدء تشغيل Microsoft Excel وفتح C:\ExcelData1.xls.
  4. تطبيق نمط خط غامق على الخلية A2.
  5. تطبيق مائل وتسطير نمط الخلية B2 ومحاذاة إلى الوسط.
  6. تطبيق تنسيق تاريخ طويل للخلية C2.
  7. حفظ وإغلاق C:\ExcelData1.xls.
  8. فوق Form1، انقر فوق Add_Records ومن ثم انقر فوق انتقال.
  9. افتح C:\ExcelData1.xls في Excel ثم لاحظ أنه قد ورثت صفين جديد التنسيق من الصف الأول.

القيود

فيما يلي بعض القيود التي تفرضها موفر Jet OLE DB فيما يتعلق بمصادر بيانات Excel:
  • لا يمكنك إدراج الصيغ في الخلايا باستخدام ADO.NET.
  • موفر Jet OLE DB غير قادرة على توفير معلومات المفتاح/الفهرس للجداول الموجودة في مصنف Excel. ولهذا السبب، لا يمكنك استخدام CommandBuilder لإنشاء عمليات التحديث والإدراج للسجلات تلقائياً في مصنف Excel.

المراجع

للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

316756 PRB: يحدث خطأ عند استخدام ADO.NET OLEDbDataAdapter لتعديل مصنف Excel

كيفية استخدام ADO مع بيانات Excel من Visual Basic أو VBA 257819
كيفية نقل البيانات إلى مصنف Excel باستخدام Visual Basic.NET 306022

كيفية نقل البيانات إلى مصنف Excel باستخدام Visual C#.NET 306023

كيفية الاستعلام وعرض بيانات Excel باستخدام ASP.NET و ADO.NET و Visual Basic.NET 311731

كيفية الاستعلام وعرض بيانات Excel باستخدام ASP.NET ADO.NET و Visual C#.NET 306572

نموذج 278973 : اكسسيلادو يوضح كيفية استخدام ADO لقراءة وكتابه البيانات في المصنفات في Excel



خصائص

رقم الموضوع: 316934 - آخر مراجعة: 19‏/01‏/2017 - المراجعة: 2

تعليقات