كيفية نقل بيانات XML إلى Microsoft Excel 2002 أو Excel 2003 ل Microsoft باستخدام Visual C #

للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع 307021 .

ملخص

يقدم Excel 2002 وظيفة لفتح ملفات بتنسيق لغة التوصيف الموسعة (XML). يمكن فتح ملف XML بشكل جيد باستخدام واجهة المستخدم أو التعليمات البرمجية مباشرة في Excel 2002 أو Excel 2003.

باستخدام Microsoft Visual C# 2005 أو Microsoft Visual C#.NET، يمكنكم استفادة وظائف XML في Excel بسلاسة نقل البيانات إلى المصنف بغرض تقديم البيانات بتنسيق وترتيب من اختيارك. توضح هذه المقالة كيفية تنفيذ هذه المهمة.

إنشاء XML من مجموعة بيانات لاستخدامها في Excel 2002 أو Excel 2003

يوضح هذا القسم كيفية إنشاء كائن DataSet وتصدير البيانات التي يحتويها ملف XML باستخدام أسلوب WriteXML . يمكن فتح ملف XML الذي تم إنشاؤه في Excel مباشرة. لأغراض التوضيح، يتم إنشاء الكائن DataSet من قاعدة بيانات نموذج Northwind الوصول ل Microsoft باستخدام موفر OLEDB Jet. ومع ذلك، يعمل مدونة مماثلة مع أي كائن مجموعة البيانات التي تقوم بإنشائها باستخدام Visual C# 2005 أو Visual C#.NET.

  1. بدء تشغيل Microsoft Visual Studio 2005 أو Microsoft Visual Studio. NET. من القائمة ملف ، انقر فوق جديد ومن ثم انقر فوق المشروع. حدد تطبيق Windows من أنواع مشاريع Visual C#. يتم إنشاء Form1 افتراضياً.
  2. من القائمة عرض ، حدد مربع الأدوات لعرض مربع الأدوات ثم إضافة زر إلى Form1.
  3. انقر نقراً مزدوجاً فوق Button1. يظهر إطار التعليمات البرمجية للنموذج.
  4. إضافة توجيهات using التالية إلى أعلى Form1.cs:
    using System.Data.OleDb;using System.Xml;

  5. إضافة متغير عضو خاص التالية إلى فئة Form1:
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
    + "Northwind.mdb;";

    ملاحظة: قد تحتاج إلى تعديل مسار Northwind.mdb في سلسلة اتصال ليطابق التثبيت الخاص بك.
  6. أضف التعليمات البرمجية التالية إلى معالج button1_Click :
    //Connect to the data source.         OleDbConnection objConn = new OleDbConnection (strConn);
    try
    {
    objConn.Open();

    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    "Select CustomerID, CompanyName, ContactName, "
    + "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);


    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    "C:\\Customers.xml", System.IO.FileMode.Create);

    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    fs, System.Text.Encoding.Unicode);

    //Add processing instructions to the beginning of the XML file, one
    //of which indicates a style sheet.
    xtw.WriteProcessingInstruction("xml", "version='1.0'");
    //xtw.WriteProcessingInstruction("xml-stylesheet",
    // "type='text/xsl' href='customers.xsl'");

    //Write the XML from the dataset to the file.
    objDataset.WriteXml(xtw);
    xtw.Close();

    //Close the database connection.
    objConn.Close();
    }
    catch (System.Exception ex)
    {
    MessageBox.Show(ex.Message);
    }

    ملاحظة: يجب تغيير التعليمات البرمجية في Visual Studio 2005. بشكل افتراضي، Visual C# إضافة نموذج إلى المشروع عند إنشاء مشروع Windows Forms. ويسمى النموذج Form1. يتم تسمية الملفات بين التي تمثل النموذج Form1.cs و Form1.designer.cs. كتابة التعليمات البرمجية في Form1.cs. ملف Form1.designer.cs حيث مصمم نماذج Windows بكتابة التعليمات البرمجية التي تقوم بتنفيذ كافة الإجراءات التي يمكنك تنفيذها بواسطة سحب وإفلات عناصر التحكم من مربع الأدوات.

    لمزيد من المعلومات حول مصمم نماذج Windows في 2005 Visual C#، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
  7. اضغط F5 لإنشاء البرنامج وتشغيله.
  8. انقر فوق Button1 لإنشاء ملف XML، ثم أغلق Form1 لإنهاء البرنامج.
  9. بدء تشغيل برنامج Excel 2002 أو Excel 2003 وفتح ملف إخراج C:\Customers.xml.
  10. بعد أن لاحظنا في كيفية تحليل XML في الصفوف والأعمدة في المصنف الجديد، أغلق الملف وقم بإنهاء Excel.

تنسيق XML باستخدام ورقة أنماط

هذه الخطوة كيفية استخدام ورقة أنماط (XSL) لتحويل كيف يتم تنسيق بيانات XML ومرتبة في مصنف Excel.
  1. باستخدام أي محرر HTML أو محرر نص (مثل Notepad.exe)، حفظ XSL التالية ك C:\Customers.xsl:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  <xsl:template match="/">
    <HTML>
    <HEAD>
    <STYLE>
    .HDR { background-color:bisque;font-weight:bold }
    </STYLE>
    </HEAD>
    <BODY>
    <TABLE>
    <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
    <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
    <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
    <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
    <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
    <TD CLASS="HDR">Customer ID</TD>
    <TD CLASS="HDR">Company</TD>
    <TD CLASS="HDR">Contact</TD>
    <TD CLASS="HDR">Country</TD>
    <TD CLASS="HDR">Phone</TD>
    <xsl:for-each select="NewDataSet/Table">
    <TR>
    <TD><xsl:value-of select="CustomerID"/></TD>
    <TD><xsl:value-of select="CompanyName"/></TD>
    <TD><xsl:value-of select="ContactName"/></TD>
    <TD><xsl:value-of select="Country"/></TD>
    <TD><xsl:value-of select="Phone"/></TD>
    </TR>
    </xsl:for-each>
    </TABLE>
    </BODY>
    </HTML>
    </xsl:template>
    </xsl:stylesheet>

  2. قم بإلغاء التعريف السطر التالي من التعليمات البرمجية في معالج button1_Click :
    xtw.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='customers.xsl'");

    يكتب هذا السطر من التعليمات البرمجية إرشادات معالجة ملف XML الذي يستخدمه Excel لتحديد ورقة أنماط (Customers.xsl).

  3. اضغط F5 لإنشاء البرنامج وتشغيله.
  4. انقر فوق Button1 لإنشاء ملف XML، ثم أغلق Form1 لإنهاء البرنامج.
  5. بدء تشغيل برنامج Excel 2002 أو Excel 2003 وفتح ملف إخراج C:\Customers.xml.
  6. لأن يرى Excel إرشادات المعالجة لورقة الأنماط في XML، تتلقى مطالبة مربع حوار عند فتح الملف. في مربع الحوار استيراد XML ، حدد فتح الملف باستخدام ورقة الأنماط التالية تطبيق. في القائمة، حدد Customers.xsl وانقر فوق موافق. لاحظ أنه يتم تنسيق بيانات XML وترتيب الأعمدة وفقا لورقة الأنماط.
  7. قم بإغلاق الملف ثم قم بإنهاء Excel.

استخدام تعليمات برمجية لفتح XML محولة

حتى هذه النقطة، يمكنك فتح ملف XML باستخدام واجهة المستخدم في Excel. يوضح هذا القسم كيفية أتمتة Excel لفتح المصنف برمجياً. يوضح النموذج التالي كيفية فتح XML تم تحويلها دون تدخل من قبل المستخدم عن طريق تحويل XML في الكائن DataSet إلى HTML.
  1. إضافة مرجع إلى مكتبة كائنات 11.0 Microsoft Excel أو Microsoft Excel 10.0 مكتبة كائنات. للقيام بذلك، اتبع الخطوات التالية:
    1. من القائمة ' مشروع '، انقر فوق إضافة مرجع.
    2. ضمن علامة التبويب " COM "، حدد موقع مكتبة كائنات 11.0 Microsoft Excel أو Microsoft Excel 10.0 مكتبة كائنات وانقر فوق تحديد.
    3. انقر فوق "موافق" في مربع الحوار إضافة مراجع لقبول التحديد الخاص بك. إذا تلقيت موجه لإنشاء wrappers لمكتبة الذي قمت بتحديده، انقر فوق نعم.
  2. إضافة توجيهات using التالية إلى أعلى Form1.cs:
    using Excel = Microsoft.Office.Interop.Excel;
  3. في مشروع Visual C# 2005 أو Visual C#.NET، إضافة زر آخر إلى Form1.
  4. انقر نقراً مزدوجاً فوق Button2. عندما يظهر إطار التعليمات البرمجية للنموذج، أضف التعليمات البرمجية التالية إلى معالج Button2_Click :
    //Connect to the data source.OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();

    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    "Select CustomerID, CompanyName, ContactName, "
    + "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);

    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    "C:\\Customers.htm", System.IO.FileMode.Create);

    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    fs, System.Text.Encoding.Unicode);

    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);

    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt,
    oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt,
    oOpt, oOpt, oOpt);


  5. اضغط F5 لإنشاء البرنامج وتشغيله.
  6. انقر فوق Button2 لفتح XML تم تحويله في Excel.
ملاحظة: بينما يعرض Excel 2002 و Excel 2003 الطراز أسلوب OpenXML التي تمكنك من فتح ملف XML برمجياً باستخدام أوراق الأنماط التي يتم تطبيقها، لا النموذج السابق في استدعاء هذا الأسلوب بسبب مشكلة معروفة باستخدام هذا الأسلوب من عميل التنفيذ تلقائي. الأسلوب OpenXML يعمل كما هو متوقع عند استدعائه من ماكرو في Excel؛ ومع ذلك، عندما يتم استدعاء هذا الأسلوب من عميل التنفيذ تلقائي، يتم تجاهل معلمة أوراق الأنماط .

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

الخطأ 307230 : أوراق أنماط معلمة أسلوب OpenXML تجاهلها عند أتمتة Excel 2002

المراجع

لمزيد من المعلومات، راجع مقالة قاعدة المعارف التالية:
معلومات 288215 : برنامج Microsoft Excel 2002 و XML
كيفية أتمتة Microsoft Excel من Visual C#.NET 302084
كيفية تعبئة كائن بيانات من قاعدة بيانات باستخدام Visual Basic.NET 301216
كيفية نقل البيانات إلى مصنف Excel باستخدام Visual C#.NET 306023
خصائص

رقم الموضوع: 307029 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات