Как использовать технологию ASP для создания документа поток в Microsoft Word, форматированный текст (RTF)

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:270906
Аннотация
В данной статье описывается способ создания форматированного текста Формат файлов (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 в порядке для Чтобы воспользоваться преимуществами богатой объектной модели Word.
Путем создания документов с нуля и без использования объектной модели Word можно сделать приложение ASP гибкий и Увеличение производительности. Этот подход используется в следующих образцов, демонстрируется использование FileSystemObject Чтобы создать RTF-файл, который может интерпретироваться в Microsoft Word на клиентах обозревателя.

Первый пример показывает, как использовать технологию ASP для создания RTF-документ, содержащий заголовки и нижние колонтитулы, содержит таблицу и использует другой стиль и цвет шрифта для текста в документе. Первый Образец использует ADO для доступа к данным из образца базы данных "Борей" доступ к Создание 90 plus страницы документа.

Во втором примере демонстрируется, как создать документ RTF отличается от слияния в Word. Полученный документ содержит заголовки и нижние колонтитулы, различные форматирования абзаца и страницы разрывы и использует различные шрифты и типов с помощью документа. Это пример также использует ADO для доступа к данным из базы данных "Борей" для создания 170 plus страницы документа.

Примечание Спецификация форматированный текст (RTF) является открытым Спецификация для генерирования RTF-совместимых текстовых файлов. Можно использовать Документация по спецификации на следующих разработчиков корпорации Майкрософт Веб-узел сети (MSDN) в качестве ресурса для создания собственных RTF-файлы. Тем не менее, предоставляемые спецификации "как-является", и не supportted, Службу технической поддержки Майкрософт. Для последней версии спецификации RTF просмотреть веб-узле MSDN:
Форматированный текст (RTF) формату 1.6
http://msdn2.Microsoft.com/en-us/library/aa140277 (office.10) .aspx

Пример ASP 1

Код ASP демонстрирует создание страницы 90 plus RTF документ, содержащий отчет рассчитанных величин.

Примечание Переменная sConn в этом коде примера содержит путь к базе данных "Борей". Убедитесь, что путь, указанный для установки 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 в этом коде примера содержит путь к базе данных "Борей". Убедитесь, что путь, указанный для установки 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 & """>"%> 				
Ссылки
Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
257757Вопросы, связанные с серверной автоматизации Office
193998 Как прочитать и вывод двоичных данных в ASP
266263 Ошибка: Word 2000 и Excel 2000 отображают источник ASP при использовании типа MIME для потока данных
247318 Ошибка: Word 2000 и Excel 2000 не перенаправлять неправильно при использовании Response.Redirect
RichText RTF-WD2007

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 270906 — последний просмотр: 06/05/2011 18:34:00 — редакция: 4.0

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

  • kbexpertiseinter kbautomation kbfso kbhowto kbprogramming kbmt KB270906 KbMtru
Отзывы и предложения