对不起的称呼感到抱歉,但是想不出更好的说法,因此让Bingleing呆了几天。
我有读取RTF文件的代码,已将占位符放入其中以充当合并字段。该代码将替换文本,但是将文件保存回时,不会显示新值。
var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
text = text.Replace("{\\{Title\\}\\}", "Mr.");
text = text.Replace("{\\{LastName\\}\\}", "Johnson");
text = text.Replace("{\\{FirstName\\}\\}", "James");
Run Code Online (Sandbox Code Playgroud)
替换前的RTF: {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}} {* \ generator Riched20 6.2.9200} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ f0 \ fs22 \ lang9您好{{Title}} {{LastName}} \ par {{FirstName}} \ par}您好吗
替换后的RTF: {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}} {* \ generator Riched20 6.2.9200} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ f0 \ fs22 \ lang9您好\先生。\ Johnson \ par你好吗,\ James \ par}
在记事本中保存并打开后的RTF: {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ f0 \ fs22您好。\ par你好吗,\ par}
我还需要执行其他步骤吗,它将以正确的格式保存文件?我也尝试过使用RichTextBox控件,将字符串加载到其中,然后调用Save()方法。这给了我相同的结果。
谢谢,詹姆斯
阅读这篇文章,清理RTF文本并使用以下代码后,请找出答案:
var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
rtb.Rtf = text;
rtb.Text = rtb.Text.Replace("{{Title}}", "Mr.");
rtb.Text = rtb.Text.Replace("{{LastName}}", "Johnson");
rtb.Text = rtb.Text.Replace("{{FirstName}}", "James");
rtb.SaveFile(@"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Johnson2.rtf");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |