[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
目录
- [C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
-
- 背景问题
- 通过代码获取word中[选定内容]识别真相
-
- 对于普通段落
-
- word及程序运行结果
- 断点识真相
- 对于带有公式的段落
-
- Word及程序运行结果
- 断点识真相
- 采用通用回车符是否对Word原文有影响?
-
- 代码实现替换
- 对于普通段落
-
- word及程序运行结果
- 对于带有公式的段落
-
- Word及程序运行结果
- 断点识真相
- 最终结论
- 美图分享
背景问题
word中段落回车符到底是什么?
- 主要是在开发VSTO Word时,在Word中显示为换行的段落回车符。来到了C#中的一些From窗格控件中显示时(例如textbox),居然不显示为换行了。
- 本来还以为被控件把段落回车符给阉割了,谁知道根本就不是这样。
- 我们一起通过实验测试,一起把真相给揪出来吧!!!
- 这样以后开发过程中,就又可以一起快乐地避坑了。
通过代码获取word中[选定内容]识别真相
public string Run_GetText(Word.Selection selection){ string text = selection.Text; //去除表格中的制表符 text = text.Replace("\a", ""); //去除首尾空格和首尾回车符【\n】 text = text.Trim(); //将[选定内容]中间的段落回车符【\r】,替换成通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】 text = text.Replace("\r", Environment.NewLine); return text;}
对于普通段落
word及程序运行结果
断点识真相
代码运行中,通过断点可以看到。word默认的段落回车符是【\r】
对于带有公式的段落
Word及程序运行结果
断点识真相
代码运行中,通过断点可以看到。word中公式的组成中含有【\r】
采用通用回车符是否对Word原文有影响?
代码实现替换
通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】
就是说,得采用通用回车符,C#中的控件才能正确显示换行。
//将[选定内容]中间的段落回车符【\r】,替换成通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】 text = text.Replace("\r", Environment.NewLine);
对于普通段落
word及程序运行结果
对于带有公式的段落
Word及程序运行结果
对于公式,除了文本化后,不复原态外,结果和上面的一样
断点识真相
通过代码断点,可以看到粘贴到word中后,会被恢复成word默认段落回车符【\r】
最终结论
- 哪怕替换成通用回车符
- 粘贴到word中后,也会恢复成word默认段落回车符【\r】
- 所以不用担心通用回车符不会与word中的段落符不兼容。
美图分享