0

Excelで検索ワードのハイライトを作成中です。検索語は xml ファイルに保存されます。以下のコードは、特定の単語だけを強調表示するのではなく、セル全体を強調表示します。

どこが間違っているのですか?セル全体(セル内のすべての単語)ではなく、セル内の検索語を強調表示するだけです。

try
{
    string[] arr = XDocument.Load(@"C:\Users\273714\Desktop\Dictionary.xml").Descendants(nodeString).Select(element => element.Value).ToArray();

    string str;
    int rCnt = 0;
    int cCnt = 0;

    Excel.Worksheet xlWorkSheet1;
    Excel.Range range;
         xlWorkSheet1 = (Excel.Worksheet)doc1.Worksheets.get_Item(1);
    Excel.Range last = xlWorkSheet1.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
    range = xlWorkSheet1.get_Range("A1", last);
   // range = xlWorkSheet1.get_Range("A1", "A100");

    //Do your search thing here

    for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
    {
        for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
        {
            str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
            if (str == null)
            {
                Console.WriteLine("null");
            }
            else
            {
                str.Replace("\\", "");
                string[] words = str.Split(' ');
                foreach (string arrs in arr)

                {
                   foreach (string word in words)
                    {
                        if (word == arrs)
                        {
                            var cell = (range.Cells[rCnt, cCnt] as Excel.Range);

                            cell.Font.Bold = 1;
                            cell.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
                        }
                    }
                }
            }
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
4

1 に答える 1

0

それによると、セル内のすべての文字が強調表示されます。検索したセル内のテキストのみを強調表示したいと思います。これに従うことができます

Excel.Range val = xlWorkSheet.Cells[18, "C"] as Excel.Range;
string match = "find";
string match2 = val.Value2.ToString();
int index=-1;
//Here apply  string  matching to find index of first letter of matching sub string 
// if the index is not -1  then do following      
            val.get_Characters(index, match.Length).Font.Color =System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);
于 2013-09-12T08:53:55.400 に答える