我有一个词的文件,它有各种疯狂(关于格式,而不是内容)。复制并粘贴文本只保留粗体
以除去疯狂的唯一方法是Ctrl键 + 甲,Ctrl键 + Ç,和Ctrl键 + V到一个记事本文件。但仅仅使用原始文本,很难理解文档,因此我想在文档中保留加粗格式(以及文本大小为可选)。
有无论如何我可以使用C#来复制粗体格式的文档中的文本?
我有一个词的文件,它有各种疯狂(关于格式,而不是内容)。复制并粘贴文本只保留粗体
以除去疯狂的唯一方法是Ctrl键 + 甲,Ctrl键 + Ç,和Ctrl键 + V到一个记事本文件。但仅仅使用原始文本,很难理解文档,因此我想在文档中保留加粗格式(以及文本大小为可选)。
有无论如何我可以使用C#来复制粗体格式的文档中的文本?
这将所有内容复制到文档末尾,通过比较原始文本和新文本来应用粗体字,并删除原始文本。
private static void KeepOnlyBoldFormatting(Word.Document document)
{
var undoRecord = document.Application.UndoRecord;
try
{
document.Application.ScreenUpdating = false;
undoRecord.StartCustomRecord("KeepOnlyBoldFormatting");
var originalRange = document.Range();
var originalEnd = originalRange.End - 1; //Skip last character (paragraph marker that cannot be removed)
originalRange.InsertAfter(originalRange.Text.Substring(0, originalRange.Text.Length - 1));
//Make sure the ranges refer to the right things
originalRange.Start = 0;
originalRange.End = originalEnd;
var newRange = document.Range(originalEnd, originalEnd + originalEnd);
for (int i = 1; i <= originalRange.Characters.Count; i++)
{
var origChar = originalRange.Characters[i];
var newChar = newRange.Characters[i];
if (origChar.Bold == -1)
newChar.Bold = -1;
}
originalRange.Delete();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
document.Application.ScreenUpdating = true;
undoRecord.EndCustomRecord();
}
}
当 [originalEnd = 1660925] ,则代码[VAR newRange = document.Range(originalEnd,originalEnd + originalEnd);] 抛出异常: “超出范围” – 123iamking
也许originalEnd + originalEnd - 1?也许我正在银行业务上增加一个线上休息时间,这不是在那里或什么 – Jbjstam
这是[Office Interop](https://stackoverflow.com/tags/office-interop/info)的东西吗? –
@Uwe凯姆:是的,它是一个Office互操作事 – 123iamking