إحدى طرق استخدام Excel في ASP هي ربط ملف Excel كقاعدة بيانات، ثم تكون العملية مشابهة لعملية قاعدة بيانات Access. ومع ذلك، هذه الطريقة ليست مفيدة دائمًا لأن Excel ليس قاعدة بيانات علائقية. بالنسبة للتنسيق الثابت، الذي يحتوي على دمج خلايا معقد، وأنماط خطوط حدودية، وأنماط، وعلاقات صيغ بين الخلايا، وما إلى ذلك، أعتقد أن أسهل طريقة لفهمها هي فتح إعداد موجود في الخلفية، وإنشاء ملف قالب، ثم إدراج البيانات حيث المطلوبة والحفظ والإخراج...
الطريقة المذكورة هنا هي إنشاء كائن Excel مباشرة، مما يسهل إجراء عمليات مختلفة على مستند Excel في الخلفية.
الشيء الآخر الذي يجب تعيينه على جانب الخادم هو إذن التشغيل لمكون COM. اكتب "DCOMCNFG" في سطر الأوامر للدخول إلى واجهة تكوين مكون COM. حدد Microsoft Excel وانقر فوق الزر "تحديد مخصص" لجميع خيارات الاختيار الثلاثة أثناء التحرير، قم بإضافة "الجميع" إلى كافة الأذونات. بعد الحفظ، قم بإعادة تشغيل الخادم.
وهذا مهم جدًا إذا لم يتم ضبطه، فلن تتمكن أجهزة الكمبيوتر الأخرى من إكمال إنشاء كائنات Excel.
ومع ذلك، فإن هذه الطريقة بها أيضًا عيب. في عملي الفعلي، إذا كان هناك بالفعل ملف Excel مفتوح على الخادم، ثم قم بتنفيذ نفس الملف، فسوف يحدث خطأ ما، وما زلت لا أفهم السبب الأماكن التي لم يتم إعدادها.
بالإضافة إلى ذلك، فإن نموذج تنسيق التعليمات البرمجية في المقالة المذكورة أعلاه غير مكتمل، والعديد من فواصل الأسطر والمسافات ليست بتنسيق دقيق. إذا كان الرمز مكتملًا، فما عليك سوى نسخ الرمز وسيتم تشغيله بنجاح، ثم ابحث ببطء وتعديله، وسيكون من السهل البدء الآن، والكود المعدل هو كما يلي (تم حذف الجزء الذي يرسم المخطط):
<%
على خطأ استئناف التالي
strAddr=Server.MapPath(".")
تعيين objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&"TempletNull.xls")
قم بتعيين objExcelBook=objExcelApp.ActiveWorkBook
تعيين objExcelSheets=objExcelBook.Worksheets
تعيين objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Week1"،"Week2"، "Week3"، "Week4"، "Week5"، "Week6"، "Week7". ")
objExcelSheet.Range("B3:k3").Value=Array("67"، "87"، "5"، "9"، "7"، "45"، "45"، "54"، "54" ""10")
objExcelSheet.Range("B4:k4").Value=Array("10"،"10"، "8"، "27"، "33"، "37"، "50"، "54"، "10" ""10")
objExcelSheet.Range("B5:k5").Value=Array("23"،"3"، "86"، "64"، "60"، "18"، "5"، "1"، "36" "80")
objExcelSheet.Cells(3,1).Value = "InternetExplorer"
objExcelSheet.Cells(4,1).Value = "Netscape"
objExcelSheet.Cells(5,1).Value = "أخرى"
objExcelSheet.Range("b2:k5").حدد
SaveAs(strAddr&"TempExcel.xls")
objExcelApp.Quit
تعيين objExcelApp=لا شيء
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<أتش تي أم أل>
<الرأس>
<TITLE>مستند جديد</TITLE>
<METANAME="Generator"CONTENT=" MicrosoftFrontPage5.0">
<METANAME="المؤلف"CONTENT="">
<METANAME="الكلمات الرئيسية"CONTENT="">
<METANAME="Description"CONTENT="">
</الرأس>
<الجسم>
</الجسم>
</HTML>
بعد تشغيل ملف Excel، تحتاج إلى إخراج الملف. للقيام بذلك فعليًا، استخدم طريقة ASP لإعادة التوجيه إلى Excel. في بعض الأحيان يتم فتحه مباشرة في IE، وفي بعض الأحيان تظهر نافذة "تنزيل، فتح، حفظ" إذا كنت بحاجة إلى ذلك لفتحه مباشرة في IE، ما عليك سوى استخدام FSO لتحميل ملف Excel ثم إخراجه في IE.
<%
Dim Fso,FileExt,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
تعيين Fso=Server.CreateObject("Scripting.FileSystemObject")
FileExt = Fso.GetExtensionName(strFilePath)
تعيين fso=لا شيء
حدد Case FileExt
حالة "وثيقة"
مايم = "التطبيق/msword"
الحالة "xls"
مايم = "التطبيق/مسيكسسيل"
إنهاء تحديد
Call OutPut(strFilePath,Mime)
'####################################### # #############
إخراج الوظيفة (strFilePath،Mime)
Response.ContentType = Mime
كونست adTypeBinary = 1
تعيين objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
تعيين objStream = لا شيء
وظيفة النهاية
'################################################################################################## ###
%>
في التطبيقات العملية. عندما يقوم الخادم بتشغيل برنامج Excel أو ACCESS، يرسل العميل لإنشاء Excel. لا يمكن أن ينجح كائن التطبيق. وفي حالة أخرى، عندما يقدم العميل طلبًا، فإنه لا ينتهي، ولا يمكن أن ينجح الطلب المقدم من عميل آخر! قد يكون هناك حلول أخرى لهذه المشكلة، ولكن على الأقل هذا غير مستقر.
لقد كانت هناك أمثلة ناجحة ذات صلة على شبكة الإنترانت الخاصة بقسمنا، وعندما بحثت فيها، اكتشفت أنهم كانوا يقومون بإنشاء برنامج Excel على العميل. طلب. بهذه الطريقة، لن يكون هناك المزيد من الصراعات على جانب الخادم. بالنسبة للعميل، نظرًا لأنه يعمل في الشبكة المحلية (LAN)، يمكن ضبط مستوى أمان العميل IE على مستوى منخفض وتنشيط (التحقيق) ذي الصلة، حتى إذا لم يكن هناك إعداد، فسوف ينبثق IE نافذة تحذير: "هل يُسمح لك بالتشغيل activeX؟"
الكود المطبق مشابه للسجل السابق، وهو ببساطة كما يلي:
<script language="vbscript">
قم بتعيين objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
'تم تنسيق ملف xls الخاص بعنوان الشبكة بالكامل وطباعته وحفظه على الخادم.
قم بتعيين objExcelBook=objExcelApp.ActiveWorkBook
تعيين objExcelSheets=objExcelBook.Worksheets
تعيين objExcelSheet=objExcelBook.Sheets(1)
'====إليك العبارات الخاصة بملء البيانات في خلايا Excel. إذا تم استخراج البيانات من قاعدة البيانات، فيمكن إنشاء هذه العبارات بواسطة برنامج الخلفية. الأعمدة في ASP هي:
'على سبيل المثال: Response.write "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'أو objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Week1"، "Week2"، " الأسبوع 3"، "الأسبوع 4"، "الأسبوع 5"، "الأسبوع 6"، "الأسبوع 7")
objExcelSheet.Range("B3:k3").Value=Array("67"، "87"، "5"، "9"، "7"، "45"، "45"، "54"، "54" ""10")
objExcelSheet.Range("B4:k4").Value=Array("10"،"10"، "8"، "27"، "33"، "37"، "50"، "54"، "10" ""10")
objExcelSheet.Range("B5:k5").Value=Array("23"،"3"، "86"، "64"، "60"، "18"، "5"، "1"، "36" "80")
objExcelSheet.Cells(3,1).Value = "InternetExplorer"
objExcelSheet.Cells(4,1).Value = "Netscape"
objExcelSheet.Cells(5,1).Value = "أخرى"
'==================
'objExcelApp.Quit
'set objExcelApp=لا شيء
</script>
في الكود أعلاه
'objExcelApp.Quit
'set objExcelApp=لا
يتم استخدام أي شيء كإلغاء، لأنه لا تغلق Excel.applicaition هنا، وإلا فسيتم إغلاق Excel بعد ملء البيانات. في هذا الوقت، يحتاج ملف Excel المفتوح على العميل إلى تعديله أو طباعته من قبل العميل. في الوقت نفسه، يحتوي كائن objexcelapp أيضًا على طرق لإعدادات الطباعة والدخول إلى واجهة معاينة الطباعة، يرجى الرجوع إلى المعلومات ذات الصلة ببرنامج Excel.