كيفية استخدام XSL إلى تحويل جدول بيانات XML Excel للاستخدام جانب الخادم

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

اضغط هنا لرابط المقالة باللغة الانجليزية278976
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
يقدم Excel 2002 وظائف جديدة من XML يتيح للمطورين استخراج بيانات منسقة من أوراق العمل في تنسيق جدول بيانات XML (XMLSS). يمكن أن ترجع الخاصية قيمة الكائن نطاق تنسيق الخلية ومحتويات في XMLSS. يتم تنسيق XMLSS بشكلٍ جيد XML يمكن تحميله بواسطة محلل XML Microsoft للحصول على معالجة في وقت التشغيل. استخدام المحتملة واحدة من هذه الميزة نشر بيانات XML إلى تطبيق خادم للمعالجة. يوضح هذا المقال واحد مثل المثال حيث يتم استخدام مصنف Excel كـ واجهة برنامج نصي صفحات ملقم النشطة (ASP) بمعالجة بيانات XML التي يتم استخراج من نطاق في مصنف.

يرشدك هذا المقال إنشاء ورقة أنماط أن تعمل كافة كـ طلب نظام معالجة و برنامج ASP نصي أو مصنف Excel. خلال الخطوات التالية، يتم إعطاء توضيحات كل مكون "و" كيف يساهم إلى الحل بالكامل. نموذج الموضحة في هذا المقال أيضاً متوفرة للتنزيل; للحصول على إرشادات التحميل, راجع القسم "تنزيل" في نهاية هذه المقالة.
معلومات أخرى
في هذه العينة العمل العديد من المكونات مختلفة معاً لتعمل كـ معالج ترتيب:
  • البرامج النصية لـ ASP. المكون من جانب الخادم هو برنامج نصي ASP يأخذ طلبات العميل طلبات جديدة. يتوقع البرنامج النصي طلبات بتنسيق XML معينة. يستغرق البرنامج النصي المعلومات من XML فإنه يتلقى ويقوم بإضافة طلب جديد إلى قاعدة بيانات نموذج Northwind باستخدام كائنات بيانات ActiveX (ADO).
  • مصنف Excel. هو مكون العميل مصنف Excel الذي يحتوي على ورقة عمل لإدخال ترتيب ماكرو التي تتفاعل مع البرنامج النصي ASP لمعالجة طلب جديد للمستخدم.
  • أوراق الأنماط XSL. ورقة أنماط التحويلات XMLSS Excel إلى تنسيق XML المخصص الذي يتطلب البرنامج النصي ASP. ماكرو Excel بتحميل لورقة الأنماط ثم بتحويل XMLSS إلى XML المخصص قبل إلى نشر البيانات إلى برنامج ASP نصي على ملقم ويب.

خطوة 1: إنشاء برنامج نصي معالجة طلب ASP

إنشاء مجلد جديد باسم OrderProc في المجلد الجذر الظاهري من ملقم ويب (C:\Inetpub\Wwwroot هو المجلد الجذر الافتراضية). في المجلد OrderProc إنشاء ملف جديد باسم OrderEntry.asp مع البرنامج النصي أدناه. يستخدم البرنامج النصي قاعدة بيانات Access Northwind نموذج; قد تحتاج إلى تعديل مسار Northwind.mdb في سلسلة الاتصال (sConn) لمطابقة تثبيت Office.
<%@ Language="vbscript" CodePage="65001"%><%    Response.Buffer = True    Response.ContentType = "text/xml"      Dim oDataXML                    'Custom Data XML passed in by caller.    Dim oConn                       'ADO Connection to Northwind database.    Dim oOrdersRS, oDetailsRS       'ADO Recordsets for the Orders table and Order Details Table.    Dim oItems                      'Collection of nodes meeting the match. "Order/Items/Item"    Dim oItem                       'Single node in oItems.    Dim sCustID                     'Customer ID for the new order.    Dim sOrderID                    'Order ID of the newly created record. in Orders table    Dim sStatus                     'Status of order processing.    Dim bContinue                   'Flag that indicates whether or not to continue processing the order.    Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\program files\microsoft office\office10\samples\northwind.mdb"    On Error Resume Next    'Load the XML passed into the request.    Set oDataXML = Server.CreateObject("Microsoft.XMLDOM")    oDataXML.Load Request    bContinue = True    'Obtain the Customer ID. If no customer id is provided, report an error.    sCustID = oDataXML.selectSingleNode("Order/CustomerID").Text    If sCustID="" Then       sStatus = "There is no customer specified for the order"       bContinue = False    End If    'Obtain collection of "items" for this order. If the item count = 0, report an error.    If bContinue Then       Set oItems = oDataXML.SelectNodes("Order/Items/Item")       if oItems.length = 0 Then          sStatus = "There are no items to process for this order"          bContinue = False       End If    End If    'Open a connection to the Northwind database.    If bContinue Then       Set oConn = CreateObject("ADODB.Connection")       oConn.Open sConn       if err.Number <> 0 Then          sStatus = err.Description          bContinue = False       end if    End If    'Open the Orders and Order Details tables and add the new records.    If bContinue Then       Set oOrdersRS = CreateObject("ADODB.Recordset")       oOrdersRS.Open "SELECT * FROM Orders", oConn, 2, 3       Set oDetailsRS = CreateObject("ADODB.Recordset")       oDetailsRS.Open "SELECT * FROM [Order Details]", oConn, 2, 3       'Add a new entry in the Orders table.       oOrdersRS.AddNew       oOrdersRS.Fields("CustomerID").Value = sCustID       oOrdersRS.Fields("OrderDate").Value = CDate(Now)       oOrdersRS.Update       sOrderID = oOrdersRS.Fields("OrderID").Value               'And a new record for each item in the order XML to the Order Details table.       If err.number = 0 Then          For Each oItem In oItems              oDetailsRS.AddNew              oDetailsRS.Fields("OrderID").Value = sOrderID              oDetailsRS.Fields("ProductID").Value = oItem.childnodes(0).Text              oDetailsRS.Fields("Quantity").Value = CLng(oItem.childnodes(1).Text)              oDetailsRS.Fields("UnitPrice").Value = CLng(oItem.childnodes(2).Text)              oDetailsRS.Fields("Discount").Value = 0              oDetailsRS.Update          Next       End If       if err.Number <> 0 Then          sStatus = err.Description       else          sStatus = "Success"       end if       'Close the recordsets and connection.       oDetailsRS.Close       oOrdersRS.Close       oConn.Close    End If      'Return the resulting XML (the Order status).    Dim sResult    sResult = "<?xml version=""1.0""?>"    sResult = sResult & "<OrderProcessed>"     sResult = sResult & "<Status>" & sStatus & "</Status>"    sResult = sResult & "<OrderID>" & sOrderID & "</OrderID>"    sResult = sResult & "</OrderProcessed>"    Response.Write sResult    Response.End %> 				
لمعالجة طلب ترتيب بنجاح, يتوقع هذا البرنامج النصي لـ ASP بيانات XML بناء كما يلي:

<?xml version="1.0"?><Order>    <CustomerID>BOTTM</CustomerID>    <Items>        <Item>            <ProductID>4</ProductID>            <Quantity>11</Quantity>            <Price>20.25</Price>        </Item>        <Item>            <ProductID>18</ProductID>            <Quantity>2</Quantity>            <Price>63.7</Price>        </Item>    </Items></Order>					
تعيين هذا XML ترتيب للعميل بالمعرف "BOTTM". الترتيب يحتوي على عنصرين: وحدات 11 من المنتج مع معرف 4 و 2 وحدات المنتج مع معرف 18.

يقوم البرنامج النصي ASP بعض معالجة الخطأ للتأكد من أن العملاء تم توفيرها به مع المعلومات بترتيب صحيح. يجب أن يوفر عملاء معرف العميل "و" عنصر واحد على الأقل; إذا لم تتحقق هذه المعايير, البرنامج النصي ASP لم بمعالجة الترتيب وإرجاع خطأ.

إرجاع برنامج ASP نصي بيانات XML إلى العملاء بإجراء طلب ترتيب. يشير إلى نجاح أو فشل معالجة ترتيب XML هذا و أيضاً توفير رقم ترتيب النجاح:

<?xml version="1.0"?><OrderProcessed>    <Status>Success</Status>    <OrderID>11078</OrderID></OrderProcessed>					

الخطوة 2: إنشاء واجهة مصنف إدخال ترتيب

  1. في Excel، بدء مصنف جديد.
  2. أدخل التسميات في الخلايا A1 و A3 B3 و C3 كما يلي:
    A1:   Customer ID    B1:                C1:A2:                  B2:                C2:A3:   Product ID     B3:   Quantity     C3:   Price					
  3. حدد الخلايا A1:B1. في القائمة إدراج ، أشر إلى اسم ، ثم انقر فوق إنشاء. في مربع الحوار إنشاء أسماء حدد العمود الأيسر ثم انقر فوق موافق. يؤدي هذا إلى إنشاء اسم معرف Customer_ID خلية B1.
  4. حدد الخلايا A3:C8. في القائمة إدراج ، أشر إلى اسم ، ثم انقر فوق إنشاء. في مربع الحوار إنشاء أسماء حدد صف علوي ثم انقر فوق موافق. يؤدي هذا إلى إنشاء أسماء معرفة Product_ID "و" الكمية "و" سعر A4:A8 الخلايا و B4:B8 و C4:C8 على التوالي.
  5. اضغط ALT + F11 لبدء تشغيل محرر Visual Basic.
  6. في محرر Visual Basic ، من القائمة إدراج ، انقر فوق وحدة نمطية. إضافة الماكرو التالي إلى الوحدة النمطية للتعليمات البرمجية:
    Sub ProcessOrder()    Const sFolder = "http://YourWebServer/OrdrProc/"    'Load a new DOMDocument based on the XMLSS of the range A1:C8.    Dim oRangeXML    Set oRangeXML = CreateObject("Microsoft.XMLDOM")    oRangeXML.LoadXML Range("A1:C8").Value(xlRangeValueXMLSpreadsheet)            'Transform the XMLSS to custom XML that the ASP can    'interpret as a new "order".    Dim oXSL, oOrderXML    Set oXSL = CreateObject("Microsoft.XMLDOM")    oXSL.Load ThisWorkbook.Path & "\OrderEntry.xsl"    Set oOrderXML = CreateObject("Microsoft.XMLDOM")    oRangeXML.transformNodeToObject oXSL, oOrderXML        'Submit the XMLSS to the ASP page for processing.    Set oXMLHTTP = CreateObject("Microsoft.XMLHTTP")    oXMLHTTP.Open "Post", sFolder  & "/OrderEntry.asp", False    oXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=""UTF-8"""    oXMLHTTP.send oOrderXML        'Retrieve the results of the processing by the ASP page.    Dim oResult    Set oResult = CreateObject("Microsoft.XMLDOM")    oResult.Load oXMLHTTP.responseXML    'Check the returned XML -- if the Status is "Success", fill in the    'Order # and display a message. If the Status is not "Success",    'report the error.    Dim sStatus As String    sStatus = oResult.selectsinglenode("OrderProcessed/Status").Text    If sStatus = "Success" Then        MsgBox "Thank you. Your order number is " & _            oResult.selectsinglenode("OrderProcessed/OrderID").Text    Else        MsgBox sStatus    End IfEnd Sub					
    ملاحظة: تغيير YourWebServer في ثابت sFolder إلى اسم ملقم ويب.

  7. إغلاق محرر Visual Basic والرجوع إلى Excel.
  8. حفظ المصنف في مجلد OrdrProc الذي أنشأته مسبقاً كـ Invoice1.xls.
"ترتيب النموذج" هو A1:C8 الخلايا بشكل أساسي. الماكرو يسترد XMLSS نموذج الطلب ثم تحميل في كائن DOMDocument جديد. هذا بتحميل ورقة أنماط لغة صفحات الأنماط الموسعة (XSL) إلى آخر DOMDocument ويقوم بتحويل في XMLSS إلى بنية XML التي يستطيع ASP كـ طلب جديد. يستخدم الماكرو الكائن XMLHTTP لنشر ترتيب XML إلى البرنامج النصي ASP على ملقم ويب. البرنامج النصي ASP يعالج الترتيب وإرجاع ثم من XML إلى الماكرو عن معلومات حالة ترتيب.

ملاحظة: يتم إعطاء مهمة تحويل XMLSS إلى XML ترتيب مخصصة باسم اختياراً تصميم إلى التعليمات البرمجية للماكرو العميل. يمكنك أيضاً نشر XMLSS النصي ASP ودع ASP تنفيذ التحويل لها.

الخطوة 3: إنشاء صفحات الأنماط

في المجلد OrdrProc إنشاء ملف جديد باسم OrderEntry.xsl ثم قم بلصق التعليمة البرمجية XSL التالية:
<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">  <xsl:template match="/">    <xsl:pi name="xml">version="1.0"</xsl:pi>    <Order>      <CustomerID><xsl:value-of select="Workbook/Worksheet/Table/Row/Cell[NamedCell[@ss:Name='Customer_ID'] $and$ Data[@ss:Type!='Error']]"/></CustomerID>      <Items>        <xsl:for-each select="Workbook/Worksheet/Table/Row[Cell[NamedCell[@ss:Name='Product_ID'] $and$ Data[@ss:Type!='Error']]]">          <Item>            <xsl:apply-templates/>          </Item>        </xsl:for-each>      </Items>    </Order>  </xsl:template>  <xsl:template match="Cell[NamedCell[@ss:Name='Product_ID']]">    <ProductID><xsl:value-of select="Data"/></ProductID>  </xsl:template>  <xsl:template match="Cell[NamedCell[@ss:Name='Quantity']]">    <Quantity><xsl:value-of select="Data"/></Quantity>  </xsl:template>  <xsl:template match="Cell[NamedCell[@ss:Name='Price']]">    <Price><xsl:value-of select="Data"/></Price>  </xsl:template></xsl:stylesheet>				
تحويلات XSL XMLSS إلى المخصصة ترتيب XML (هو موضح في الخطوة 1) كما يلي:
  • يحدد XSL موقع "معرّف الزبون" قبل العبور التسلسل الهرمي عقدة حتى يصادف عقدة <cell>يحتوي على <namedcell>و <data>العقد التابعة. فحصه أن <namedcell>تحتوي سمة ss:Name يساوي 'Customer_ID' ويحتوي هذا <data>سمة ss:Type لا يساوي 'خطأ'.
  • لتحديد عناصر الترتيب XSL البحث عن كافة العقد <row>مع عقدة <cell>التي تتضمن عقدة تابعة <namedcell>مع سمة ss:Name 'Product_ID' عقدة تابعة <data>بالسمة ss:Type غير 'خطأ'.
  • بالنسبة لكل <row>يحدد XSL عنصر لترتيب ، يستخدم XSL قوالب لمطابقة العقد <namedcell>التي لها سمة ss:Name 'Product_ID' و 'الكمية' و 'سعر'.

الخطوة 4: تشغيل نموذج لتعليمة برمجية معالجة طلب جديد

  1. العودة إلى Invoice1.xls في Excel.
  2. لمحاكاة إدخال ترتيب تحديث الورقة1 مع العملاء ومعلومات المنتج كما هو موضح أدناه:
    A1:   Customer ID    B1:   BOTTM        C1:A2:                  B2:                C2:A3:   Product ID     B3:   Quantity     C3:   PriceA4:   4              B4:   11           C4:   20.25A5:   18             B5:   2            C5:   63.70					
    ملاحظة: بالنسبة هذا النموذج، يجب إدخال العملاء والمنتج معرفات صالحة للبرنامج النصي ASP لمعالجة الترتيب بنجاح.

  3. من القائمة أدوات، أشر إلى ماكرو ثم انقر فوق وحدات الماكرو. حدد الماكرو ProcessOrder في القائمة ثم انقر فوق تشغيل.
  4. إذا كان البرنامج النصي ASP بنجاح يعالج الترتيب ، تظهر رسالة مع طلب رقم جديد. ابدأ تشغيل Microsoft Access وفتح قاعدة بيانات نموذج Northwind. يجب أن تشاهد إدخال جديد في الجدول Orders (الطلبيات) مع "معرف طلب" التي يتم إرجاعها من ASP. ترى أيضاً جهازي إدخالات جديدة في الجدول "Order Details" لمعرف ترتيب نفس قم بإنهاء Access ثم العودة إلى Invoice1.xls في Excel.
  5. قم بإلغاء تحديد "معرّف الزبون" في الخلية B1 ثم قم بتشغيل الماكرو مرة أخرى. الملقم غير قادر على معالجة الترتيب هذا الوقت، ثم تقوم بإرجاع خطأً يشير إلى توفير "معرف العميل" لا.

التحميل

يحتوي ExcelXML.exe على نموذج الموضحة في هذه المقالة بالإضافة إلى إصدار محسن من Invoice1.xls. يستخدم Invoice2.xls نفس البرنامج النصي ASP و ورقة نمط XSL Invoice1.xls. ومع ذلك، يوضح Invoice2.xls ميزات Excel إضافية حماية ورقة العمل "و" التحقق من صحة البيانات "و" الصيغ VLOOKUP التي يمكنك استخدامها لتوفير نموذج طلب ومألوفة بالنسبة للمستخدم ونشرها أكثر.

يتوفر الملف التالي للتنزيل من "مركز التنزيل لـ Microsoft":
تاريخ الإصدار:, 3 أبريل 2001

للحصول على معلومات إضافية حول كيفية تنزيل ملفات دعم Microsoft "، انقر فوق رقم المقالة التالي لعرضها في" قاعدة المعارف لـ Microsoft:
119591كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر الإنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدام Microsoft أحدث من برنامج كشف الفيروس المتوفر على التاريخ الذي تم نشر الملف. يتم تخزين الملف على ملقمات محسنة الأمان التي تساعد على منع إجراء أية تغييرات غير مصرح بها على الملف.
مراجع
للحصول على معلومات إضافية حول استخدام XML و ASP لإنشاء حلول من جانب الملقم راجع مواقع شبكة مطوري Microsoft (MSDN) التالي على الويب: للحصول على معلومات إضافية، انقر فوق رقمي المقالتين التاليتين لعرضهما في "قاعدة المعارف لـ Microsoft:
288215INFO: Excel 2002 و XML
285891كيفية استخدام Visual Basic أو ASP لإنشاء جدول بيانات XML لـ Excel 2002
288130كيفية استخدام ASP لإنشاء جدول بيانات XML للحصول على عرض جانب العميل
(c) يوم شركة Microsoft حقوق كافة محجوز. المساهمات قبل Lori B. Turner ، Microsoft Corporation.

ExcelXML

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 278976 - آخر مراجعة: 12/05/2015 22:39:49 - المراجعة: 4.8

Microsoft Visual Basic 6.0 Professional Edition, Microsoft Excel 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbdownload kbdownload kbfile kbhowto KB278976 KbMtar
تعليقات