以前別の方が『C# ClosedXMLでセル内の指定した文字に色を付けたい』という内容で投稿されていましたが、
参考になりませんでしたので、質問させてください。
質問内容はタイトルの通りなのですが、
ClosedXMLでセルの中の特定の文字だけ色を変えるとともに、
指定の記号(※など)の前に改行を入れたいと思っています。
そこで次のようにコードを書いてみました。
「※かきくけこ」の文字色だけを灰色にし、
※の前に改行を入れる、というコードです。
C#
1string n = "※あいうえお※かきくけこ※さしすせそ"; 2int x = n.IndexOf("※かきくけこ"); 3 4ws.Cell(1, 1).SetValue<string>(n); 5if (x >= 0) 6{ ws.Cell(1, 1).RichText.Substring(x, 5).SetFontColor(XLColor.Gray); } 7 8ws.Cell(1, 1).SetValue<string>(ws.Cell(1, 1).Value.ToString().Replace("※", Environment.NewLine + "※"));
このときは、改行は正しくできましたが、文字色は全く変わっていませんでした。
ちなみに、「先に改行を入れてから文字色を変える」というパターンでは、
次のような書き方で成功しています。
C#
1string n = "※あいうえお※かきくけこ※さしすせそ"; 2 3ws.Cell(1, 1).SetValue<string>(n.Replace("※", Environment.NewLine + "※")); 4n = ws.Cell(1, 1).Value.ToString(); 5int x = n.IndexOf("※かきくけこ"); 6 7if (x >= 0) 8{ ws.Cell(1, 1).RichText.Substring(x, 6).SetFontColor(XLColor.Gray); }
このときは、セル内の特定の文字列だけ色を変えることができていたため、
やはりReplaceによる改行を入れることで、
セル内の色情報が初期色の黒に戻ってしまうのではないかと考えました。
これでも一見成功していると言えば成功しているのですが、
ただ諸事情により、できれば改行は最後にしたいと考えています。
『セル内の特定の文字列の文字色を変えたあとでReplaceで改行しても、
文字色が黒に戻らないようにする』
には、どうすればよろしいでしょうか。
ご教示よろしくお願いいたします。
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/17 14:52
2021/02/18 01:13
2021/03/19 06:26