在Excel电子表格单元格内格式化文本

时间:2017-07-17 21:48:02

标签: c# excel

我需要修改的代码会创建一个Excel电子表格并在单元格中插入搜索结果。逻辑找到匹配并复制代码中的整行。然后它用<comma>替换逗号,不知道为什么,但这并不重要。我需要突出显示此搜索结果中的特定单词,最好是粗体和红色。请参阅下面的示例,搜索参数是COMPUTE,结果是整行代码,符合设计。

  

)WITH(PAD_INDEX = OFF STATISTICS_NORE COMPUTE = OFF IGNORE_DUP_KEY = OFF ALLOW_ROW_LOCKS = ON

我有一些基本代码将“上下文”变量拆分为字符串数组,如果找到匹配则应该格式化单词 - 但这就是我的挑战所在。

我发现了很多关于如何格式化整个单元格或行的示例,但没有找到单元格内的文本。这是不可能用语法做的吗?

            string[] wordList = context.Split(' ');
            StringBuilder reassembleContext = new StringBuilder();
            int i = 0;
            regexPattern = new Regex(pattern.ToString(CultureInfo.InvariantCulture));

            foreach (string word in wordList)
            {
                var matches = Regex.Matches(word, pattern.ToString(), RegexOptions.IgnoreCase);
                if (matches.Count > 0)
                {
                    wordList[i] = "<b>" + word + "</b>"; // Clearly this does not work...
                }

                reassembleContext.Append(wordList[i]);
                reassembleContext.Append(" ");
                i++;
            }

            context = reassembleContext.ToString();

1 个答案:

答案 0 :(得分:1)

一种方法是将HTML放入剪贴板,然后粘贴它:

    System.Windows.Forms.Clipboard.SetText("<html>a<b>b</b>c");
    worksheet.Range["A1"].PasteSpecial();

另一种方法是使用单元格的.Characters属性来设置格式:

    worksheet.Range["A1"].Characters[38, 7].Font.Bold = true;