使用Outlook 2013加载项中的word.interop格式化文本

时间:2015-09-22 20:42:05

标签: c# office-interop outlook-addin

当用户按下功能区插件中的按钮时,我试图设置我在新电子邮件开头插入的文字的格式 代码很简单,因为它首先检查文本的类型是否先前插入,如果是,则删除它,然后使用Word.Range.InsertBefore(.....)插入一个新的文本括号; 文字将是: 分类:....... 分类:.......

我遇到的问题是插入后我使用Range.Font,Text等格式化字体... 我需要分类:......格式化而不是它们之间的空格

分类之间的空间......"正在格式化时,键入开始相同的大小,颜色等....作为" CLASSIFICATION"

我使用的代码是:

        private void setClassificationText(string classificationText, Word.WdColorIndex color)
    {
        //current mail item document
        Word.Document document = (Word.Document)mailItem.GetInspector.WordEditor;           
        Word.Range rng = document.Paragraphs[1].Range;
        //check if a classification level was already supplied
        if (checkIfClassificationExists(rng))
        {
            //get the first 2 Paragraphs and remove the text from them
            int paraCount = 2;
            for (int i = 1; i <= paraCount; i++)
            {
                Word.Range classificationRange = document.Paragraphs[i].Range;
                removeTextFromParagraph(classificationRange);
            }

            rng.Collapse();
            rng = document.Paragraphs[1].Range;         
        }

        rng.InsertBefore(classificationText + CT.lineFeedStr5 + CT.classification + classificationText + CT.lineFeedStr3);      

        //sets the color and text
        rng.Font.ColorIndex = color;
        rng.Text = CT.classification + rng.Text;
        rng.Font.Bold = 1;
    }


        private void removeTextFromParagraph(Word.Range rng)
    {
        int wordCount = rng.Words.Count;
        rng.Delete(Count: wordCount);
    }

1 个答案:

答案 0 :(得分:0)

解决了我遇到的问题。 我使用了以下内容:

private void setClassificationText(string classificationText, Word.WdColorIndex color)
    {
        //current mail item document
        Word.Document document = (Word.Document)mailItem.GetInspector.WordEditor;
        Word.Range rng = document.Paragraphs[1].Range;
        //check if a classification level was already supplied
        if (checkIfClassificationExists(rng))
        {
            //get the first 2 Paragraphs and remove the text from them
            int paraCount = 2;
            for (int i = 1; i <= paraCount; i++)
            {
                Word.Range classificationRange = document.Paragraphs[i].Range;
                removeTextFromParagraph(classificationRange);
            }

            rng.Collapse();
            rng = document.Paragraphs[1].Range;
        }

        //insert the text
        rng.InsertBefore(classificationText + CT.lineFeedStr5 + CT.classification + classificationText);        

        //sets the color and text
        rng.Font.ColorIndex = color;
        rng.Text = CT.classification + rng.Text;
        rng.Font.Bold = 1;

        //get the beginning and ending positions of the blank space
        startPosition = rng.Start + getClassificationLength(classificationText);
        endPosition = (int)startPosition + CT.lineFeedStr5.Length-1;

        //get the Word.Range for the blank space
        Word.Range rngNormal = document.Range(ref startPosition, endPosition);
        //set blank space to be normal font (not bold and black)
        rngNormal.Bold = 0;
        rngNormal.Font.ColorIndex = Word.WdColorIndex.wdBlack;
    }

private int getClassificationLength(string classificationText)
    {
        int returnValue = 0;
        returnValue = CT.classification.Length + classificationText.Length;
        return returnValue;
    }

希望这可以帮助其他人。