2017-07-17 4 views
0

Der Code, den ich ändern muss, erstellt eine Excel-Tabelle und fügt die Suchergebnisse in die Zellen ein. Die Logik findet die Übereinstimmung und kopiert die gesamte Zeile in den Code. Dann ersetzt es Kommas mit <comma>, nicht sicher warum, aber das ist nicht wichtig. Ich muss das spezifische Wort in diesem Suchergebnis vorzugsweise fett und rot hervorheben. In dem folgenden Beispiel ist der Suchparameter COMPUTE und das Ergebnis ist die gesamte Codezeile, die wie vorgesehen ist.Formatieren von Text in der Excel-Tabellenkalkulationszelle

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

Ich habe einigen grundlegenden Code, der einen 'Kontext' Variable in ein String-Array aufteilt und wenn eine Übereinstimmung Es wurde gefunden, dass es das Wort formatieren sollte - aber das ist, wo meine Herausforderung liegt.

Ich fand Tonnen von Beispielen, wie man die gesamte Zelle oder Reihe formatiert, aber nicht Text innerhalb der Zelle. Ist das nicht möglich, grammatisch zu tun?

  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

Ich weiß nichts über die Programmierung in 'C#' für Excel, aber in Excel selbst, können Sie Text innerhalb der Zelle zur Verfügung gestellt formatieren, dass der Inhalt der Zelle eine Textzeichenfolge und nicht das Ergebnis einer Formel. In VBA würden Sie die Zeicheneigenschaft verwenden, um zu bestimmen, welche Zeichen unterschiedlich formatiert werden. –

+0

ist das Interop.Excel oder OpenXML oder etwas anderes ..? – Slai

+0

Es ist Interop.Excel aber das kann geändert werden. – Risho

Antwort

1
  1. Der einfache Weg ist der HTML-Code in der Zwischenablage zu kopieren, und fügen Sie ihn:

    System.Windows.Forms.Clipboard.SetText("<html>a<b>b</b>c"); 
    worksheet.Range["A1"].PasteSpecial(); 
    
  2. Der üblicher Weg, um die Zelle .Characters Eigenschaft zu verwenden ist, um die Formatierung zu setzen:

    worksheet.Range["A1"].Characters[38, 7].Font.Bold = true; 
    
  3. Ein anderer Weg ist die Excel-Replace Format zu verwenden:

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