Meilleur auteur de réponses
maintien mise en forme fichier RTF

Question
-
Bonjour à tous,
je fais une petite appli qui va mettre à jour une liste de fichier RTF. en gros, je dois modifier certaines info dans les fichiers.
j'ai bien trouvé comment modifier une info dans un fichier RTF :
public void lecture() { RichTextBox rtb = new RichTextBox(); rtb.LoadFile(@"d:\Attestation annuelle.rtf", RichTextBoxStreamType.RichText); rtb.Text = rtb.Text.Replace("(4100!", "(9999!"); rtb.SaveFile(@"d:\Attestation annuelle2.rtf"); }
mais je perds la mise en page du document. tout se met en gras et aligné à gauche.
quelqu'un saurait me dire pourquoi et comment y remedier?
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
Réponses
-
Dans ce cas on doit utiliser les RegExp avec RTF.
Le code qui fonctionne chez moi:Regex reg1 = new Regex(@"\(([0-9]{4})\!"); rtb.Rtf = reg1.Replace(rtb.Rtf, "BlahBlah");
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Modifié Aurel Bera mardi 24 septembre 2013 12:05
- Marqué comme réponse Sébastien Lallemand mardi 24 septembre 2013 12:21
Toutes les réponses
-
Bonjour
La réponse c'est ici:
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Marqué comme réponse Aurel Bera jeudi 19 septembre 2013 09:11
- Non marqué comme réponse Aurel Bera jeudi 19 septembre 2013 11:18
-
Bonjour,
la question n'est pas la même. là je parle de mise en forme seulement. une fois le fichier enregistré, toute la mise en forme disparait. text en gras et tout aligné à droite.
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
Désolé d'être dans une telle hate.
Essayez plutot de enregistrer le fichier avec:
rtb.SaveFile(@"d:\Attestation annuelle2.rtf", RichTextBoxStreamType.RichText);
Voir les details ici:
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.richtextboxstreamtype.aspx
Merci,
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.
- Modifié Aurel Bera jeudi 19 septembre 2013 11:18
-
bonjour,
j'ai testé la solution mais ça ne change rien. le text est toujours en gras et aligné à gauche...
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
je reste bloqué avec mon texte en gras. quand je crée le fichier, le texte se met automatiquement en gras, même si je force le style en Regular... je ne comprend pas...
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
A priori c'est un problème connu :
Essayez plutôt:
richTextBox1.Rtf = richTextBox1.Rtf.Replace("(4100!", "(9999!");
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Modifié Aurel Bera mardi 24 septembre 2013 06:58
-
bonjour Aurel,
Merci pour la réponse.
ça ne fonctionne pas.
mon code actuel :
public void lecture() { RichTextBox rtb = new RichTextBox(); rtb.LoadFile(@"d:\Attestation annuelle.rtf", RichTextBoxStreamType.RichText);
Regex reg1 = new Regex(@"\(([0-9]{4})\!");
rtb.Text = reg1.Replace(rtb.Text, "(${1}00!"); //Cette ligne change la mise en forme du document
rtb.Rtf = rtb.Rtf.Replace(rtb.Text,"(${1}00!"); // Cette ne change rien du tout dans le document(meme pas les données que je veux changer) rtb.SaveFile(@"d:\Attestation annuelle2.rtf"); }
il doit bien y avoir une solution pour modifier un fichier RTF sans perdre la mise en page. ou alors, c'est un bug Microsoft. des utilisateurs m'ont indique ca leur arrive parfois de copier du text dont une partie est en gras et tout se met en gras au moment du "coller" dans Word.
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
Bonjour
Vous avez besoin d’utiliser des RegExp?
Si vous utilisez la propriété Text du RTB - elle ne contient aucune information sur le formatage, donc c'est normal de le perdre – voir http://msdn.microsoft.com/fr-fr/library/system.windows.forms.richtextbox.text.aspx.
Donc la solution c’est de utiliser la propriété RTF avec un Replace – (RTF retourne un String, donc un Replace dans le String).
Quel est le texte que vous voulez remplacer ?
Parce-que le format correct sera :
rtb.Rtf = rtb.Rtf.Replace("string a remplacer" ,"string a remplacer avec");
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
je dois remplacer toutes les chaines du format "(4chiffres!" dans les fichier RTF.
A part en expression regulière, je ne vois pas comment faire car les "4chiffres" ne sont jamais les memes et je ne les connais pas à l'avances.
merci pour l'explication sur la propriété RTF.
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
Dans ce cas on doit utiliser les RegExp avec RTF.
Le code qui fonctionne chez moi:Regex reg1 = new Regex(@"\(([0-9]{4})\!"); rtb.Rtf = reg1.Replace(rtb.Rtf, "BlahBlah");
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Modifié Aurel Bera mardi 24 septembre 2013 12:05
- Marqué comme réponse Sébastien Lallemand mardi 24 septembre 2013 12:21
-
TOI, JE T'AIME !!!! :o)
Ça marche nickel et la mise en page reste intacte. me reste à plus qu'a rechercher toutes les formes de string que je veux remplacer.
le gros point positif du forum pour moi apprend en autodidacte le c#, c'est de tomber sur des gens comme toi avec je continue d'apprendre.
Merci !!!
"Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF
-
Merci aussi.
Un possible problème peut apparaitre à cause de format RTF.
Le string retourne par RTF c'est quelque chose de ce type:
"{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1048{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset238 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs17 123\\par\r\naaaaa\\par\r\n1234\\par\r\n954556+421161561564123123\\lang1048\\f1\\par\r\n}\r\n"
Donc vous devez faire attention et ne pas modifier les balises RTF.
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -