كيفية استخدام ASP لإنشاء مستند Rich Text Format (RTF) إلى دفق إلى Microsoft Word

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

اضغط هنا لرابط المقالة باللغة الانجليزية270906
الموجز
توضح هذه المقالة كيف يمكنك إنشاء ملفات Rich Text Format (RTF) مع البرنامج النصي ASP ومن ثم دفق هذه الملفات إلى Microsoft Word. يوفر هذا الأسلوب بديل إلى جانب الملقم التنفيذ من Microsoft Word إنشاء مستند وقت التشغيل.

ملاحظة تتطلب هذه المقالة أن يكون لديك نسخة من قاعدة بيانات نموذج Northwind.mdb مثبت من Microsoft Access 2000 أو من Microsoft Access 2002 أو من Microsoft Office Access 2003.
معلومات أخرى
وجود عيوب إنشاء مستندات Word مع ASP التنفيذ من جانب الملقم:
  • أداء Microsoft Word هو التنفيذ مهلة العملية الملقم; أطول لتنفيذ تأخذ المكالمات مهلة العملية.

  • الملقم "قابلية التحجيم باسم التنفيذ" Microsoft Word يحتوي مقدار حمل حقيقي بسبب يجب أن يتم تحميل ملف Winword.exe لكي reap فوائد طراز الكائن منسق الخاص بـ Word.
بواسطة إنشاء المستندات من البداية و بدون استخدام طراز الكائن Word ، يمكن إنشاء تطبيق ASP scaleable أكثر ثم أيضاً زيادة أداء. يتم استخدام هذا الأسلوب في نماذج التالية كيفية استخدام FileSystemObject لإنشاء ملف RTF يمكن تفسيره في Microsoft Word في عملاء المستعرض.

يبين نموذج الأول على كيفية استخدام ASP لإنشاء مستند RTF التي تحتوي على رؤوس الصفحات وتذييلاتها يحتوي على جدول يستخدم الألوان والأنماط خط مختلف عن نص كامل المستند. يستخدم نموذج الأول ADO للوصول إلى البيانات من نموذج قاعدة بيانات Northwind Access لإنشاء مستند 90-plus-الصفحة.

يوضح النموذج الثاني كيفية إنشاء مستند RTF مشابهاً من دمج المراسلات في Word. يحتوي المستند الناتج على رؤوس الصفحات وتذييلاتها, متعددة الفقرة فواصل الصفحة وتنسيقها و أنماط الخطوط مختلفة يستخدم وأنواع عبر المستند. يستخدم هذا النموذج أيضاً ADO للوصول إلى البيانات من قاعدة البيانات Northwind لإنشاء مستند 170-plus-الصفحة.

ملاحظة مواصفات Rich Text Format (RTF) مواصفات عامة لإنشاء ملفات نصية متوافق مع RTF. يمكنك استخدام الوثائق مواصفات في موقع شبكة مطوري Microsoft (MSDN) التالي على الويب كمورد لمساعدتك في إنشاء الملفات RTF. ومع ذلك، يتم توفير المواصفات "كـ- هو" ، وهو ليس supportted الدعم التقني لـ Microsoft. للحصول على أحدث إصدار من مواصفات RTF راجع موقع MSDN التالي:
مواصفات تنسيق (RTF) نص منسق 1-6
http://msdn2.microsoft.com/en-us/library/aa140277(office.10).aspx

نموذج ASP 1

يوضح ASP التالية إنشاء RTF 90-plus صفحة المستند الذي يحتوي على تقرير الرسوم التوضيحية المحسوبة.

ملاحظة يحتوي متغير sConn في نموذج التعليمات البرمجية هذا المسار إلى قاعدة البيانات Northwind. تأكد من أن المسار المتوفر المناسبة تثبيت Office. كما تحتاج إلى توفير الوصول للكتابة إلى المجلد الذي يحتوي على ASP بحيث يمكن إنشاء المستند. يجب على أفراد محددين ضمن مجال Windows NT هذا الوصول ولكن يمكن تطبيق على الكل للوصول المجهول.
<%@ Language=VBScript %><%   Dim sRTF, sFileName, sConn   sConn = "c:\program files\microsoft office\office\samples\northwind.mdb"   Response.Buffer = True   'Create the file for the RTF   Dim fso, MyFile   Set fso = CreateObject("Scripting.FileSystemObject")   sFileName = "sample1.doc"   Set MyFile = fso.CreateTextFile(Server.MapPath(".") & "\" & _                                   sFileName, True)   MyFile.WriteLine("{\rtf1")   'Write the color table (for use in background and foreground colors)   sRTF = "{\colortbl;\red0\green0\blue0;\red0\green0\blue255;" & _          "\red0\green255\blue255;\red0\green255\blue0;" & _          "\red255\green0\blue255;\red255\green0\blue0;" & _          "\red255\green255\blue0;\red255\green255\blue255;}"   MyFile.WriteLine(sRTF)   'Write the title and author for the document properties   MyFile.WriteLine("{\info{\title Sample RTF Document}" & _                    "{\author Microsoft Developer Support}}")   'Write the page header and footer   MyFile.WriteLine("{\header\pard\qc{\fs50 " & _                    "ASP-Generated RTF\par}{\fs18\chdate\par}\par\par}")   MyFile.WriteLine("{\footer\pard\qc\brdrt\brdrs\brdrw10\brsp100" & _                    "\fs18 Page " & _                    "{\field{\*\fldinst PAGE}{\fldrslt 1}} of " & _                    "{\field{\*\fldinst NUMPAGES}{\fldrslt 1}} \par}")   'Write a sentence in the first paragraph of the document   MyFile.WriteLine("\par\fs24\cf2 This is a sample \b RTF \b0 " & _                    "document created with ASP.\cf0")   'Connect to the database in read-only mode   Dim conn, rs   Set conn = Server.CreateObject("ADODB.Connection")   conn.Provider = "Microsoft.Jet.OLEDB.4.0"   conn.Mode = 1    'adModeRead=1   conn.Open sConn            'Execute a query that returns ID, Product name and amount of sale   Set rs = Server.CreateObject("ADODB.Recordset")   rs.Open "SELECT [Order Details].OrderID AS ID, " & _           "Products.ProductName AS Name, " & _           "[Order Details].[UnitPrice]*[Quantity] AS Amount " & _           "FROM Products INNER JOIN [Order Details] ON " & _           "Products.ProductID = [Order Details].ProductID " & _           "ORDER BY [Order Details].OrderID", conn, 3   'adOpenStatic = 3   MyFile.WriteLine("{") 'Start table   MyFile.WriteLine("\par\par\fs24")   'Write the table header row (appears at top of table on each page)   sRTF = "\trowd\trhdr\trgaph30\trleft0\trrh262" & _          "\cellx2000\cellx7000\cellx9000" & _          "\pard\intbl\qc\b\i\ul Order ID \ul0\i0\b0\par\cell" & _          "\pard\intbl\ql\b\i\ul Product \ul0\i0\b0\par\cell" & _          "\pard\intbl\qr\ul\b\i Amount \ul0\i0\b0\par\cell" & _          "\pard\intbl\row"   MyFile.WriteLine(sRTF)   dim LastID   dim CurID   dim CurTotal   dim bFirstRow   bFirstRow=true   do while not (rs.eof)     if LastID<>rs("ID").Value and not(bFirstRow)  Then        'Starting on a row for a different id, so add the last total and         'then a blank row        sRTF = "\trowd\trgaph30\trleft0\trrh262" & _               "\cellx2000\cellx7000\clbrdrb\brdrdb\cellx9000" & _               "\pard\intbl\cell\pard\intbl\cell\pard\intbl\qr\b " & _               FormatCurrency(CurTotal, 0, False, False, True) & _               "\b0\cell\pard\intbl\row" & _               "\trowd\trgaph30\trleft0\trrh262" & _               "\cellx2000\cellx7000\cellx9000" & _               "\pard\intbl\cell\pard\intbl\cell\pard\intbl\cell" & _               "\pard\intbl\row"        MyFile.WriteLine(sRTF)        CurID = rs("ID").Value        CurTotal = 0     elseif bFirstRow then        CurID = rs("ID").Value     else        CurID = ""     end if     'Add a new row with the ID, the Product name and the amount     'Note: Amounts over 1000 are formatted with red.     sRTF = "\trowd\trgaph30\trleft0\trrh262" & _            "\cellx2000\cellx7000\cellx9000" & _            "\pard\intbl\qc " & CurID & "\cell" & _            "\pard\intbl\ql " & rs("Name").Value & "\cell"     If rs("Amount").Value >1000 Then        sRTF = sRTF & "\pard\intbl\qr\cf6 " & _               FormatNumber(rs("Amount").Value, 0, False, False, True) & _               "\cf0\cell\pard\intbl\row"     else        sRTF = sRTF & "\pard\intbl\qr " & _               FormatNumber(rs("Amount").Value, 0, False, False, True) & _               "\cell\pard\intbl\row"     end if     MyFile.WriteLine(sRTF)     LastID = rs("ID").Value     CurTotal = CurTotal + rs("Amount").Value     rs.MoveNext     bFirstRow=false   loop   MyFile.WriteLine("}") 'End Table   'Add a page break and then a new paragraph   MyFile.WriteLine("\par \page")   MyFile.WriteLine("\pard\fs18\cf2\qc " & _                    "This sample provided by Microsoft Developer Support.")   'Close the recordset and database   rs.Close   conn.Close   Set rs = Nothing   Set conn = Nothing      'close the RTF string and file   MyFile.WriteLine("}")   MyFile.Close   Response.Write _       "<META HTTP-EQUIV=""REFRESH"" Content=""0;URL=" & sFileName & """>" %>				

نموذج ASP 2

يوضح ASP التالية محاكاة دمج المراسلات في Word أو رسالة نموذجية. يتم إنشاء كل صفحة في المستند 170-plus صفحة من سجل في مجموعة سجلات ADO.

ملاحظة يحتوي متغير sConn في نموذج التعليمات البرمجية هذا المسار إلى قاعدة البيانات Northwind. تأكد من أن المسار المتوفر المناسبة تثبيت Office. كما تحتاج إلى توفير حق الوصول للكتابة إلى المجلد الذي يحتوي على ASP حتى إنشاء المستند. يجب أن يكون هذا الوصول إلى أفراد محددين ضمن NT المجال، ولكن يمكن تطبيق على الكل للوصول المجهول.
<%@ Language=VBScript %><%   Dim sRTF, sConn   sConn = "c:\program files\microsoft office\office\samples\northwind.mdb"   Response.Buffer = True   'Create the file for the RTF   Dim fso, MyFile, sFileName   Set fso = CreateObject("Scripting.FileSystemObject")   sFileName = "sample2.doc"   Set MyFile = fso.CreateTextFile(Server.MapPath(".") & "\" & _                                   sFileName, True)   MyFile.WriteLine("{\rtf1")   'Write the font table   sRTF = "{\fonttbl {\f0\froman\fcharset0 Times New Roman;}" & _          "{\f1\fswiss\fcharset0 Arial;}" & _          "{\f2\fmodern\fcharset0 Courier New;}}"   MyFile.WriteLine sRTF   'Write the title and author for the document properties   MyFile.WriteLine("{\info{\title Sample RTF Document}" & _                    "{\author Microsoft Developer Support}}")   'Write the document header and footer   MyFile.WriteLine("{\header\pard\qc\brdrb\brdrs\brdrw10\brsp100" & _                    "{\fs50 Northwind Traders} \par}")   MyFile.WriteLine("{\footer\pard\qc\brdrt\brdrs\brdrw10\brsp100" & _                    "{\fs18 Questions?\par Call (111)-222-3333, " & _                    " Monday-Friday between 8:00 am and 5:00 pm} \par}")   'Connect to the database in read-only mode   Dim conn, rs   Set conn = Server.CreateObject("ADODB.Connection")   conn.Provider = "Microsoft.Jet.OLEDB.4.0"   conn.Mode = 1    'adModeRead=1   conn.Open sConn   'Execute a query that returns ID, Product name and amount of sale   Set rs = Server.CreateObject("ADODB.Recordset")   rs.Open "SELECT Orders.ShippedDate, Orders.ShipVia, " & _           "Orders.OrderDate, Orders.OrderID, " & _           "Customers.ContactName FROM Customers INNER JOIN Orders ON " & _           "Customers.CustomerID = " & _           "Orders.CustomerID WHERE (((Orders.ShippedDate) Between " & _           "#1/1/1998# And #3/31/98#))",conn,3  'adOpenStatic = 3   Do While Not (rs.eof)          'Write the "body" of the form letter         MyFile.WriteLine   "\fs26\f1"   'Default font     MyFile.WriteLine   "\pard"     MyFile.WriteLine   "\par\par\par\par"     MyFile.WriteLine   "\par RE: Order #" & rs.Fields("OrderID").Value     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\par " & rs.Fields("ContactName").Value & ", "     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\par Thank you for your order on " & _                        rs.Fields("ShippedDate").Value & _                        ". Your order has been shipped: "     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\pard \li720 {\f2"     MyFile.WriteLine   "\par \b Order Number \b0 \tab " & _                        rs.Fields("OrderID").Value     MyFile.WriteLine   "\par \b Shipped By \b0 \tab " & _                        rs.Fields("ShipVia").Value     MyFile.WriteLine   "\par \b Shipped On \b0 \tab " & _                        rs.Fields("ShippedDate").Value     MyFile.WriteLine   "\par}"         MyFile.WriteLine   "\pard"     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\par Northwind Traders is committed to " & _                        "bringing you products of the " & _                        "highest quality from all over the world. If " & _                        "at any time you are not completely satisfied " & _                        "with any of our products, you may " & _                        "return them to us for a full refund."     MyFile.WriteLine   "\par"     MyFile.WriteLine   "\pard {\fs18 \qc \i"     MyFile.WriteLine   "\par Thank you for choosing Northwind Traders!"     MyFile.WriteLine   "\par}"     rs.MoveNext     'Add a page break and then a new paragraph     If Not(rs.eof) Then MyFile.WriteLine("\pard \page")   Loop   'Close the recordset and database   rs.Close   conn.Close   Set rs = Nothing   Set conn = Nothing      'close the RTF string and file   MyFile.WriteLine("}")   MyFile.Close   Response.Write _        "<META HTTP-EQUIV=""REFRESH"" Content=""0;URL=" & sFileName & """>"%> 				
مراجع
لمزيد من المعلومات، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة المعارف لـ Microsoft:
257757اعتبارات التنفيذ التلقائي من جانب الخادم من Office
193998كيفية قراءة البيانات الثنائية وعرضها في ASP
266263BUG: Word 2000 وExcel 2000 وعرض مصدر ASP عند استخدام نوع MIME إلى دفق البيانات
247318BUG: Word 2000 و Excel 2000 لا تقم بإعادة توجيه بشكل صحيح عند استخدام Response.Redirect
نص منسق richtext WD2007

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

خصائص

رقم الموضوع: 270906 - آخر مراجعة: 04/19/2007 18:37:17 - المراجعة: 8.1

Microsoft Office Word 2007, Microsoft Office Word 2003, Microsoft Word 2000 Standard Edition, Microsoft Word 97 Standard Edition, Microsoft Active Server Pages 4.0

  • kbmt kbexpertiseinter kbautomation kbfso kbhowto kbprogramming KB270906 KbMtar
تعليقات