Popolare un modello RTF a runtime

venerdì 31 ottobre 2008 - 12.12

gabriel81 Profilo | Junior Member

Ciao a tutti.
Grazie alle risorse che ho trovato sul web, sono riuscito a fare un form che stampa dei file RTF.
Praticamente grazie ad un controllo Richtextbox leggo il file e poi con un printdocument lo stampo.

Ora però, il secondo passaggio sul quale mi sono arenato è come riuscire a sostituire i tag presenti nel modello con i dati che estraggo da SQL Server o che calcolo comunque a runtime.

In parole povere vorrei che ad esempio se nel modello scrivo <DATAGIORNO> nella Richtextbox compaia Venerdì 31 ottobre 2008.

Si può fare??????????????

llamanna Profilo | Junior Member

Il controllo RichTextBox espone il testo da lui contenuto tramite la proprietà Rtf, che è di tipo string.
Potresti semplicemente utilizzare il metodo Replace esposto dagli oggetti stringa, per sostuire i placeholder con il valori previsti:

Ad esempio se il testo contenuto dal controllo è:

"Io mi chiamo <NOME>"

per ottenere

"Io mi chiamo Titty"

basta fare:


richTextBox.Rtf = richTextBox.Rtf.Replace("<NOME>", "Titty");

Buon lavoro.
Laura.

http://lauralamanna.blogspot.com/

gabriel81 Profilo | Junior Member

Sei fantastica! Come ho fatto a non arrivarci....

Grazie
http://www.myspace.com/madmack1981

gabriel81 Profilo | Junior Member

Ora però c'è un altro problema..

Finchè sono informazioni fisse, il replace è ottimo, ma come faccio a costruire o almeno popolare una tabella ?

ad esempio un elenco di contatti:
dal db estraggo le righe, poi ciclo su di esse e le dovrei disporre in una tabella nel modello rft mettendo nella prima colonna il nome, nella seconda il cognome e nella terza il cellulare.

E' possibile?
http://www.myspace.com/madmack1981

llamanna Profilo | Junior Member

Non credo che il Richtextbox preveda un modo per inserire dinamicamente le righe all'interno di una tabella.
L'unico suggerimento che posso darti è che se inserisci il tuo elenco alla fine del testo, puoi accodare le righe della tua tabella, come viene mostrato nel codice seguente

richTextBox1.LoadFile("TestoConTabella.rtf");
RichTextBox tempRichText = new RichTextBox();

tempRichText.LoadFile("SoloRiga.rtf");

tempRichText.Rtf = tempRichText.Rtf.Replace("<Nome>", "Cip");
tempRichText.Rtf = tempRichText.Rtf.Replace("<Cognome>", "Ciop");
tempRichText.Rtf = tempRichText.Rtf.Replace("<Telefono>", "123456798");
this.richTextBox1.AppendText(tempRichText.Text);

tempRichText.LoadFile"(SoloRiga.rtf");
tempRichText.Rtf = tempRichText.Rtf.Replace("<Nome>", "Pippo");
tempRichText.Rtf = tempRichText.Rtf.Replace("<Cognome>", "Peppino");
tempRichText.Rtf = tempRichText.Rtf.Replace("<Telefono>", "2222222");
this.richTextBox1.AppendText(tempRichText.Text);




Se stai lavorando con il framework 3.0 o 3.5 potresti dare un'occhiata a questa documentazione

http://msdn.microsoft.com/it-it/library/system.windows.controls.richtextbox.aspx



http://lauralamanna.blogspot.com/

gabriel81 Profilo | Junior Member

A dire la verità sto cercando di implementare la stampa delle fatture dalla mia applicazione.
ho aperto un thread dove chiedo consigli su come procedere.
Cioè in pratica, se c'è un modo migliore rispetto all'rtf, ben venga, l'importante è stampare queste maledette fatture!

http://dotnethell.it/forum/messages.aspx?ThreadID=26311
graZIE
http://www.myspace.com/madmack1981

llamanna Profilo | Junior Member

Il framework 3.0 offre la libreria Sytem.Printing. Non ho ancora avuto modo di utilizzarla, potresti però dare un'occhiata a questa documentazione

http://msdn.microsoft.com/it-it/library/85s6fdty.aspx.

Questo link potrebbe esserti sicuramente di aiuto
http://msdn.microsoft.com/en-us/library/ms996472.aspx#printwinforms_topic4



Infine esistono delle componenti di terze parti che ti permettono in maniere semplice, di stampare secondo una precisa formattazione, dei dati. Io conosco Aspose, che purtroppo però è a pagamento. Potresti però verificare se esistono delle librerie a tal proposito open source.

Se navigando navigando... dovessi incontrare qualcosa che possa tornati utile, ti faccio sapere.

Laura.

http://lauralamanna.blogspot.com/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5