复制和粘贴文本仅保留粗体

时间:2017-03-27 14:04:01

标签: c# ms-word format office-interop

我有一个单词文档,里面有各种各样的疯狂(关于格式,而不是内容)。

消除疯狂的唯一方法是 Ctrl + A Ctrl + C Ctrl + V 到记事本文件。但仅使用原始文本,很难理解文档,因此我希望在word文档中保留粗体格式(和文本大小为可选)。

无论如何,我可以使用C#以粗体格式复制word文档中的文本吗?

1 个答案:

答案 0 :(得分:0)

将所有内容复制到文档末尾,通过将原始文本与新文本进行比较来应用粗体字体,并删除原始文本。

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();
    }

}