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

问题描述:

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

)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(); 
+0

我什么都不知道在'C#'为Excel编程,但在Excel本身,你可以格式化提供的单元格内容是文本字符串,而不是一个公式的结果的单元格中的文本。在VBA中,您将使用characters属性来确定哪些字符的格式不同。 –

+0

是这个Interop.Excel,还是OpenXML,或其他什么..? – Slai

+0

它是Interop.Excel,但可以更改。 – Risho

  1. 最简单的办法是将HTML中的剪贴板,并将其粘贴:

    System.Windows.Forms.Clipboard.SetText("<html>a<b>b</b>c"); 
    worksheet.Range["A1"].PasteSpecial(); 
    
  2. 的常用方法是使用电池的.Characters属性来设置格式:

    worksheet.Range["A1"].Characters[38, 7].Font.Bold = true; 
    
  3. 另一种方法是使用Excel的Replace格式:

    application.ReplaceFormat.Font.Bold = true; 
    range.Replace("COMPUTE", "COMPUTE", XlLookAt.xlPart, ReplaceFormat: true);