Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come utilizzare ASP per generare un documento RTF (RICH Text Format) in flusso a Microsoft Word

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 270906
Sommario
In questo articolo viene descritto come è possibile generare i file RTF (RICH Text Format) con script ASP e flusso quindi tali file in Microsoft Word. Questa tecnica fornisce un'alternativa per l'automazione lato server di Microsoft Word per la generazione documento in fase di esecuzione.

Nota In questo articolo si presuppone che sia disponibile una copia del database di esempio Northwind.mdb installato da Microsoft Access 2000, Microsoft Access 2002 o Microsoft Office Access 2003.
Informazioni
Esistono alcuni svantaggi alla generazione di documenti di Word con ASP automazione sul lato server:
  • Prestazioni Microsoft Word è un automazione out-of-process del server; out-of-process di chiamate hanno più tempo di esecuzione.

  • Scalabilità come un server di automazione, di Microsoft Word include un notevole sovraccarico perché il file Winword.exe deve essere caricato in modo possono ottenere i vantaggi del modello a oggetti RTF di Word.
Generando i documenti da zero e senza utilizzare il modello di oggetto di Word, rendere l'applicazione ASP più scalabile e inoltre migliorare le prestazioni. Questo approccio è utilizzato negli esempi seguenti che illustrano come utilizzare FileSystemObject per creare un file RTF che può essere interpretato in Microsoft Word al browser client.

Nel primo esempio viene illustrato come utilizzare ASP per creare un documento RTF contiene intestazioni e piè di pagina, contiene una tabella, e che utilizza gli stili di diverso tipo di carattere e colori per il testo del documento. Nel primo esempio utilizza ADO per accedere ai dati dal database di Access di Northwind per creare un documento di 90 e pagine di esempio.

Nell'esempio secondo viene illustrato come creare un documento RTF simile a quello di una stampa unione di Word. Il documento risultante contiene intestazioni e piè di pagina, vari paragrafo le interruzioni di pagina e di formattazione e vengono utilizzati diversi stili e tipi all'interno del documento. In questo esempio inoltre si utilizza ADO per accedere ai dati da database Northwind per creare un documento di 170 e pagina.

Nota La specifica RTF (RICH Text Format) è una specifica pubblica generare file di testo RTF compatibile. È possibile utilizzare la documentazione per la specifica presso il seguente sito Web MSDN (informazioni in lingua inglese) come risorsa consentono di creare i propri file RTF. Tuttavia, viene fornita la specifica "come-è", e non supportted dal supporto tecnico Microsoft. Per la versione più recente della specifica RTF, vedere il seguente sito Web MSDN:

ESEMPIO di ASP 1

L'ASP riportato di seguito viene illustrata creazione di un RTF 90 e pagina documento che contiene un rapporto calcolati indice delle figure.

Nota La variabile sConn in questo esempio di codice contiene il percorso del database. Verificare che il percorso specificato sia appropriato per l'installazione di Office. È inoltre necessario fornire l'accesso in scrittura alla cartella contenente l'ASP in modo che il documento possa essere creato. Questo tipo di accesso deve essere limitato a utenti specifici in un dominio Windows NT, ma può essere applicata a tutti per l'accesso anonimo.
<%@ 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<AngularNoBind>}}</AngularNoBind>")   '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<AngularNoBind>}}</AngularNoBind> of " & _                    "{\field{\*\fldinst NUMPAGES}{\fldrslt 1<AngularNoBind>}}</AngularNoBind> \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 & """>" %>				

Esempio ASP 2

L'ASP riportato di seguito viene illustrata una simulazione di una stampa unione di Word o di una lettera. Viene generata ogni pagina del documento di 170 e pagine da un record di un recordset ADO.

Nota La variabile sConn in questo esempio di codice contiene il percorso del database. Verificare che il percorso specificato sia appropriato per l'installazione di Office. È inoltre necessario fornire l'accesso in scrittura alla cartella contenente l'ASP in modo che il documento può essere creato. Questo accesso deve essere limitato a utenti specifici in NT in un dominio, ma possono essere applicati a tutti per l'accesso anonimo.
<%@ 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;<AngularNoBind>}}</AngularNoBind>"   MyFile.WriteLine sRTF   'Write the title and author for the document properties   MyFile.WriteLine("{\info{\title Sample RTF Document}" & _                    "{\author Microsoft Developer Support<AngularNoBind>}}</AngularNoBind>")   '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 & """>"%> 				
Riferimenti
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
257757Considerazioni per l'automazione di lato server di Office
193998Come leggere e visualizzare i dati binari in ASP
266263BUG: Word 2000 ed Excel 2000 visualizzare origine ASP quando si utilizza tipo MIME per i dati di flusso
247318BUG: Word 2000 ed Excel 2000 non reindirizzare correttamente quando si utilizza Response.Redirect
testo RTF RichText WD2007

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 270906 - Ultima revisione: 04/19/2007 18:37:17 - Revisione: 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 KbMtit
Feedback
=">