Umożliwia generowanie Rich Text Format ten przewodnik krok po kroku
(RTF) z języka XML (Extensible Markup) przy użyciu kodu języka Visual Basic.NET.
Format tekstowy, który koduje sformatowany tekst, to tekst sformatowany
układ dokumentu i grafiki. Najczęściej jest używany z programem Microsoft Word. Ponieważ
W formacie RTF jest oparty na tekst, mogą być łatwo generowane z kodem. Jeśli dane XML
chcesz wyświetlić w programie Word jako katalog i listy lub dokumentu typu korespondencji seryjnej
następnie przekształcania danych XML do strumienia RTF może być idealne rozwiązanie
dla Ciebie. I w rzeczywistości, w wypadku opracowywania rozwiązanie w przypadku gdy generowanie
dokumenty na serwerze sieci Web, generowanie tych dokumentów przy użyciu opartych na tekście
Format, taki jak HTML lub RTF, jest preferowane przy użyciu automatyzacji po stronie serwera
Program Word.
Ten artykuł zawiera przykładowy kod z krok po kroku
instrukcje dotyczące przekształcania XML w formacie RTF do wyświetlania w programie Word przy użyciu kilku
podejść:
Zapisywanie pliku w formacie RTF i otworzyć go w programie Word.
Przeniesienie w formacie RTF programu Word przy użyciu systemu Windows
Schowek.
Przesyłanie strumieniowe RTF do programu Word w programie Microsoft Internet
Explorer z ASP.Aplikacja sieci Web.
Specyfikacja formatu RTF
Specyfikacja Rich Text Format (RTF) jest publiczny
Specyfikacja generować pliki tekstowe zgodne w formacie RTF. Można użyć
dokumentację specyfikacji na następujących Microsoft Developer
Witryna sieci Web Network (MSDN) jako zasobów pozwalających tworzyć pliki w formacie RTF.
Jednakże pod warunkiem specyfikacji "jako-jest", a nie jest obsługiwana przez
Pomoc techniczna firmy Microsoft specyfikacji. Kliknij poniższe łącza
dla specyfikacji RTF:
Możesz pobrać prawidłowy dokument XML z dowolnego źródła i Przekształć w formacie RTF.
Poniższa procedura przedstawia sposób przekształcenia niestandardowy kod XML w formacie RTF
albo do pliku lub kopiowany do Schowka.
Tworzenie nowego języka Visual Basic.NET Aplikacja systemu Windows. Automatycznie utworzony zostanie formularz Form1.
Dwa formanty przycisku Dodaj do formularza Form1.
Na Widok menu, kliknij przycisk Kod.
Wstaw następujący u góry okna kodu przed
Implementacja klasy Form1:
Dodaj następujący kod do klasy Form1 implementacji
(przed Klasa końcowy):
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "To File"
Button2.Text = "To Clipboard"
End Sub
Private Sub ButtonsClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click
Dim sPath As String = Directory.GetParent(Directory.GetCurrentDirectory()).ToString
' Open the XML file.
Dim xmlDoc As New XmlDocument()
xmlDoc.Load(sPath & "\Dictionary.xml")
' Open the XSL file.
Dim xslDoc As New XslTransform()
xslDoc.Load(sPath & "\Dictionary.xslt")
Select Case sender.name
Case "Button1"
' Transform the XSL and save it to file.
Dim TWrtr As New XmlTextWriter(sPath & "\Dictionary.RTF", System.Text.Encoding.Default)
xslDoc.Transform(xmlDoc, Nothing, TWrtr, Nothing)
TWrtr.Close()
MsgBox("Transformed RTF saved to " & sPath & "\Dictionary.RTF")
Case "Button2"
' Transform the XSL and copy it to the clipboard.
Dim SWrtr As New StringWriter()
xslDoc.Transform(xmlDoc, Nothing, SWrtr, Nothing)
Dim datObj As New DataObject(DataFormats.Rtf, SWrtr)
Clipboard.SetDataObject(datObj)
SWrtr.Close()
MsgBox("Transformed RTF copied to the clipboard.")
End Select
End Sub
Plik XML można dodać do projektu:
Na Projekt menu, kliknij przycisk Dodaj nowy element.
Z listy szablonów kliknij przycisk Plik XML.
Wpisz nazwę Dictionary.XML i
następnie kliknij przycisk Otwórz.
Dołącz następujące zawartości Dictionary.xml:
<Dictionary>
<Entries>
<Entry>
<Word Type="1">Energetic</Word>
<Definition>Having, exerting, or displaying energy</Definition>
</Entry>
<Entry>
<Word Type="1">Happy</Word>
<Definition>Enjoying, displaying, or characterized by pleasure or joy</Definition>
</Entry>
<Entry>
<Word Type="2">Emotion</Word>
<Definition>A complex, strong subjective response</Definition>
</Entry>
</Entries>
</Dictionary>
Dodaj plik XSLT do projektu:
Na Projekt menu, kliknij przycisk Dodaj nowy element.
Z listy szablonów kliknij przycisk Plik XSLT.
Wpisz nazwę Dictionary.XSLTa następnie kliknij przycisk Otwórz.
Naciśnij klawisz F5, aby skompilować i uruchomić program.
Kliknij przycisk Do pliku Aby zapisać przekształconych XML do pliku (Dictionary.rtf). Możesz
Otwórz plik w formacie RTF programu Word, aby przejrzeć wyniki
przekształcenie.
Kliknij przycisk Do Schowka Kopiowanie przekształconych XML do Schowka systemu Windows. Możesz
Wklej zawartość Schowka do nowego lub istniejącego dokumentu programu Word w celu wyświetlenia
wyniki.
Przekształcenie element DataSet W formacie RTF
Języka Visual Basic.NET pozwala w łatwy sposób przekształcenia na
zestawów danych. W tej procedurze pokazano, w jaki sposób można wykonać danych powiązanych z
Przykładowa baza danych Northwind i Przekształć w formacie RTF. Dwóch różnych
Transformacje są wykazane: prosty dokumentu w formacie RTF, który zawiera listę odbiorców
Skontaktuj się z informacji i nieco bardziej skomplikowane dokumentu w formacie RTF, który wyświetla
informacje o zamówieniach klientów w formacie typu korespondencji seryjnej.
Uruchom nowy program Visual Basic ASP.Aplikacja sieci Web i zapisanie go na http://localhost/RTFDemo.
UWAGA: Przyjęto poniższy kod mieć zainstalowanego programu SQL Server
localhost. Jeśli trzeba użyć innego komputera, należy zmienić Członkowskie źródła danych
połączenia typu string odpowiednio.
Private Sub ButtonsClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click
' Connect to the data source.
Dim nwindConn As SqlConnection = New SqlConnection( _
"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI")
nwindConn.Open()
' Build a dataset based on whether you requested to view a list of
' orders or a list of contacts.
Dim ds As DataSet
Dim sXSL As String
Select Case (sender.id)
Case "Button1"
ds = New DataSet("Contacts")
Dim ContactsDA As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Customers", nwindConn)
ContactsDA.Fill(ds, "Customers")
' XSLT to use for transforming this dataset.
sXSL = "Contacts.xslt"
Case "Button2"
ds = New DataSet("CustomerOrders")
Dim custDA As SqlDataAdapter = New SqlDataAdapter("SELECT CustomerID, CompanyName, " & _
"Address, City, Region, PostalCode, Country FROM Customers", nwindConn)
custDA.Fill(ds, "Customers")
Dim ordersDA As SqlDataAdapter = New SqlDataAdapter("SELECT OrderID, CustomerID, Freight " & _
"FROM Orders", nwindConn)
ordersDA.Fill(ds, "Orders")
Dim ordersdetailDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT [Order Details].OrderID, Products.ProductName, [Order Details].Quantity, " & _
"[Order Details].[UnitPrice]*[Quantity]*(1-[Discount]) AS ItemTotal " & _
"FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID " _
, nwindConn)
ordersdetailDA.Fill(ds, "OrderDetails")
nwindConn.Close()
ds.Relations.Add("CustOrders", _
ds.Tables("Customers").Columns("CustomerID"), _
ds.Tables("Orders").Columns("CustomerID")).Nested = True
ds.Relations.Add("OrdersToOrdersDetail", _
ds.Tables("Orders").Columns("OrderID"), _
ds.Tables("OrderDetails").Columns("OrderID")).Nested = True
' XSLT to use for transforming this dataset.
sXSL = "CustOrders.xslt"
End Select
' Close the connection to the data source.
nwindConn.Close()
' Transform the dataset by using the appropriate stylesheet.
Dim xmlDoc As XmlDataDocument = New XmlDataDocument(ds)
Dim xslTran As XslTransform = New XslTransform()
xslTran.Load(Server.MapPath(sXSL))
' Stream the results of the transformation to Word.
Response.ContentType = "application/msword"
Response.Charset = ""
Response.ContentEncoding = System.Text.Encoding.Default
xslTran.Transform(xmlDoc, Nothing, Response.Output)
End Sub
Dodaj poniższe wiersze kodu na górze
WebForm1.aspx.vb przed WebForm1 Implementacja klasy:
Na Projekt menu, kliknij przycisk Dodaj nowy element. Z listy szablonów kliknij przycisk Plik XSLT, podaj nazwę pliku Contacts.XSLT, a następnie kliknij przycisk Otwórz.
Zamień zawartość Contacts.xslt z następujących czynności:
Na Projekt menu, kliknij przycisk Dodaj nowy element. Z listy szablonów kliknij przycisk Plik XSLT, podaj nazwę pliku CustOrders.xslt, a następnie kliknij przycisk Otwórz.
Zamień zawartość CustOrders.xslt z następujących czynności:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" >
<xsl:output method="text"/>
<msxsl:script language="VB" implements-prefix="user">
Dim CustomerTotal as Double = 0
Dim OrderSubtotal as Double = 0
Function AddToOrderSubtotal(amt)
amt.MoveNext
OrderSubtotal = OrderSubtotal + System.Convert.ToDouble(amt.Current.Value)
End Function
Function GetOrderSubtotal
GetOrderSubtotal = OrderSubtotal
End Function
Function GetCustomerTotal
GetCustomerTotal = CustomerTotal
CustomerTotal = 0
End Function
Function GetOrderTotal(freight)
freight.MoveNext
nFreight = System.Convert.ToDouble(freight.Current.Value)
GetOrderTotal = nFreight + OrderSubtotal
CustomerTotal = nFreight + OrderSubtotal + CustomerTotal
OrderSubtotal = 0
End Function
</msxsl:script>
<xsl:template match="CustomerOrders">
<xsl:text>{\rtf1</xsl:text>
<xsl:text>{\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;\red221\green221\blue221;}</xsl:text>
<xsl:text>{\info{\title Sample RTF Document}{\author Microsoft Developer Support}}</xsl:text>
<xsl:text>{\header\pard\qc{\fs50 ASP-Generated RTF\par}{\fs18\chdate\par}\par\par}</xsl:text>
<xsl:text>{\footer\pard\qc\brdrt\brdrs\brdrw10\brsp100\fs18 Page {\field{\*\fldinst PAGE}</xsl:text>
<xsl:text>{\fldrslt }} of {\field{\*\fldinst NUMPAGES}{\fldrslt 1}} \par}</xsl:text>
<xsl:apply-templates select="Customers"/>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="Customers">
<xsl:text>\par\pard\fs20\cf2\qr\b </xsl:text><xsl:value-of select="CustomerID"/><xsl:text>\cf0\b0</xsl:text>
<xsl:text>\par\pard </xsl:text><xsl:value-of select="CompanyName"/>
<xsl:text>\par </xsl:text><xsl:value-of select="Address"/>
<xsl:text>\par </xsl:text><xsl:value-of select="City"/>
<xsl:text>, </xsl:text><xsl:value-of select="Region"/>
<xsl:text> </xsl:text><xsl:value-of select="PostalCode"/>
<xsl:text>\par </xsl:text><xsl:value-of select="Country"/>
<xsl:text>\par\par</xsl:text>
<xsl:apply-templates select="Orders"/>
<xsl:text>\trowd\cellx7000\cellx9000\pard\intbl\ql\b\cbpat1 </xsl:text>
<xsl:text>Order Total for the Current Period:\cell </xsl:text>
<xsl:text>\qr</xsl:text>
<xsl:variable name="CustTtl" select="user:GetCustomerTotal()"/>
<xsl:value-of select="format-number($CustTtl,'$###0.00')"/>
<xsl:text>\cell</xsl:text>
<xsl:text>\pard\intbl\row</xsl:text>
<xsl:text>\pard\par\pard</xsl:text>
<xsl:text>\pard\plain\fs18\cf6\qc</xsl:text>
<xsl:choose>
<xsl:when test="$CustTtl = 0">
<xsl:text>\b We've missed hearing from you!\b0 </xsl:text>
<xsl:text> At your convenience, please call your personal sales representative </xsl:text>
<xsl:text>so that we may discuss our specials for new and returning customers!</xsl:text>
</xsl:when>
<xsl:when test="$CustTtl > 2000">
<xsl:text>\b Congratulations!\b0 Your purchases for this period qualify you for a \b 20%\b0 </xsl:text>
<xsl:text> discount on one of your next orders. To take advantage of this offer, provide </xsl:text>
<xsl:text>the coupon code ABC123XYZ when placing your order.</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> We value your patronage with Northwind Traders and would love to hear from you. </xsl:text>
<xsl:text>If you have any questions about our upcoming line of products or if you want </xsl:text>
<xsl:text>a catalog for the coming season, call 1-888-000-000.</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>\par\pard</xsl:text>
<xsl:text>\par \page</xsl:text>
</xsl:template>
<xsl:template match="Orders">
<xsl:text>\trowd\cellx9000\pard\intbl\cbpat9</xsl:text>
<xsl:text>\ql\b </xsl:text><xsl:value-of select="OrderID"/><xsl:text>\b0\cell </xsl:text>
<xsl:text>\pard\intbl\row</xsl:text>
<xsl:apply-templates select="OrderDetails"/>
<xsl:text>\trowd\cellx7000\cellx9000\pard\intbl</xsl:text>
<xsl:text>\qr Subtotal:\cell </xsl:text>
<xsl:value-of select="format-number(user:GetOrderSubtotal(),'$###0.00')"/><xsl:text>\cell</xsl:text>
<xsl:text>\pard\intbl\row</xsl:text>
<xsl:text>\trowd\cellx7000\cellx9000\pard\intbl</xsl:text>
<xsl:text>\qr Freight:\cell </xsl:text>
<xsl:value-of select="format-number(Freight,'$###0.00')"/><xsl:text>\cell</xsl:text>
<xsl:text>\pard\intbl\row</xsl:text>
<xsl:text>\trowd\cellx7000\cellx9000\pard\intbl</xsl:text>
<xsl:text>\qr Total:\cell </xsl:text>
<xsl:value-of select="format-number(user:GetOrderTotal(Freight), '$###0.00')"/><xsl:text>\cell</xsl:text>
<xsl:text>\pard\intbl\row</xsl:text>
<xsl:text>\trowd\cellx9000\pard\intbl \cell\pard\intbl\row</xsl:text>
</xsl:template>
<xsl:template match="OrderDetails">
<xsl:text>\trowd\cellx5000\cellx7000\cellx9000\pard\intbl\ql </xsl:text>
<xsl:value-of select="ProductName"/><xsl:text>\cell </xsl:text>
<xsl:text>\qc </xsl:text><xsl:value-of select="Quantity"/><xsl:text>\cell </xsl:text>
<xsl:text>\qr </xsl:text>
<xsl:value-of select="format-number(ItemTotal,'$###0.00')"/><xsl:text>\cell</xsl:text>
<xsl:variable name="RunTotal" select="user:AddToOrderSubtotal(ItemTotal)"/>
<xsl:text>\pard\intbl\row</xsl:text>
</xsl:template>
</xsl:stylesheet>
Na Kompilacja menu, kliknij przycisk Tworzenie rozwiązania.
Uruchom program Internet Explorer i przejdź do
http://localhost/RTFDemo/Webform1.aspx.
Kliknij przycisk Wyświetlanie informacji o kontakcie Aby wyświetlić pierwszy przekształcenia XML do pliku RTF w programie Word.
Kliknij przycisk Wstecz w programie Internet Explorer.
Kliknij przycisk Wyświetl zamówienia klienta Aby wyświetlić drugą przekształcenia XML do pliku RTF w programie Word.
Porady dotyczące rozwiązywania problemów w formacie RTF
Jak napisana, przykładowy kodPrzekształcenie element DataSet W formacie RTFsekcja strumieni RTF bezpośrednio do przeglądarki. Alternatywnie, można zapisać
W formacie RTF do pliku i Przekieruj do zapisania pliku. Aby to zrobić, należy zastąpić te wiersze
kod w próbce
Dim writer As XmlTextWriter = New XmlTextWriter( _
Server.MapPath("Results.doc"), System.Text.Encoding.Default)
xslTran.Transform(xmlDoc, Nothing, writer)
writer.Close()
Response.Redirect("Results.doc")
Zapisywanie w formacie RTF do pliku w ten sposób pozwala łatwo sprawdzić
Struktura RTF w pliku przy użyciu dowolnego edytora tekstów, takiego jak Notatnik.
Zapisywanie w formacie RTF do pliku może być pomocne techniki rozwiązywania problemów, jeśli XSL
przekształcenie nie dawać oczekiwanych wyników.
Podczas przekształcania do pliku RTF, należy zwrócić uwagę na sposób przedstawiania
spacja i przewozu zwraca w Twój arkusz stylów, ponieważ który wpływa na sposób
W programie Word interpretowane na RTF. Zarówno przykłady kodu w tym artykule użycia <xsl:text></xsl:text> element ponieważ wymusza wszelkie informacje światło, żeby
zachowane.
Użyj <xsl:output method="text"></xsl:output> w stylesheet, aby upewnić się, że Twoje XML jest przekształcana na
tekst (zamiast XML, które jest domyślna metoda produkcji). W przeciwnym razie
Określanie tekstu jako Metoda wyprowadzania instrukcji przetwarzania XML mogą być dodawane do
plik. To może zapobiec poprawnie interpeting tekst jako
W FORMACIE RTF.
Aby uzyskać dodatkowe informacje
po stronie serwera automatyzacji programu Microsoft Word i innych aplikacji pakietu Office, kliknij przycisk
numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
INFORMACJE: Zagadnienia dotyczące po stronie serwera automatyzacji pakietu Office
Dla
dodatkowe informacje dotyczące używania w formacie RTF w roztworach, kliknąć artykuł
numery poniżej w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
UPLOAD: Wklej RichText sformatowany ciąg do programu Word przy użyciu automatyzacji języka Visual Basic
Aby uzyskać dodatkowe informacje dotyczące przekształcenia XML przy użyciu języka Visual
Podstawowe.NET, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu w programie Microsoft
Bazy wiedzy Knowledge Base:
Numer ID artykułu: 311461 - Ostatnia weryfikacja: 23 czerwca 2011 - Weryfikacja: 2.0
Informacje zawarte w tym artykule dotyczą:
Microsoft Office Word 2007
Microsoft Visual Basic .NET 2002 Standard Edition
Microsoft ASP.NET 1.0
Microsoft Word 2002 Standard Edition
Microsoft Visual Basic .NET 2003 Standard Edition
Microsoft ASP.NET 1.1
Słowa kluczowe:
kbhowto kbmt KB311461 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Dziękujemy! Państwa opinia pozwoli nam udoskonalić nasze materiały pomocnicze. Więcej informacji o metodach pomocy można znaleźć w witrynie Pomoc techniczna.