将 html 标记转换为 ClosedXml RichText
Convert html tag to ClosedXml RichText
我正在使用 ClosedXml 在 Excel 文件中导出一些数据。
我想将包含一些 html 标签的字符串导出为 <font color='gray'><s>....</s></font>
将其翻译成 RichText 颜色灰色并添加删除线。
执行此操作的代码如下:
cell.RichText.Substring(index, length).SetFontColor(XLColor.Gray).SetStrikethrough();
或者我也可以使用:
cell.RichText.AddText("foo")
问题是我还需要删除 html 标签。
我的代码:
string pattern = @"<font color='gray'><s>(\d+)<\/s><\/font>";
foreach (IXLCell cell in ws.Columns("A").CellsUsed())
{
MatchCollection matches = Regex.Matches(cell.GetValue<string>(), pattern);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
cell.RichText.Substring(capture.Index, capture.Length).SetFontColor(XLColor.Gray).SetStrikethrough();
// only content in hmtl tags
// cell.RichText.Substring(capture.Index + "<font color='gray'><s>".Length, capture.Length - "</s></font>".Length - "<font color='gray'><s>".Length).SetFontColor(XLColor.Gray).SetStrikethrough();
}
}
}
它有效,但它保留了 html 标签(带灰色)。
我是这样解决的:
foreach (IXLCell cell in ws.Columns("A").CellsUsed())
{
List<Capture> captures = new List<Capture>();
MatchCollection matches = Regex.Matches(cell.GetValue<string>(), pattern);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
captures.Add(capture);
}
}
cell.Value = cell.GetValue<string>().Replace("<font color='gray'><s>", "").Replace("</s></font>", "");
int contatore = 0;
foreach (Capture capture in captures)
{
cell.RichText.Substring(capture.Index - contatore, capture.Length - "</s></font>".Length - "<font color='gray'><s>".Length).SetFontColor(XLColor.Gray).SetStrikethrough();
contatore += "<font color='gray'><s></s></font>".Length;
}
}
我正在使用 ClosedXml 在 Excel 文件中导出一些数据。
我想将包含一些 html 标签的字符串导出为 <font color='gray'><s>....</s></font>
将其翻译成 RichText 颜色灰色并添加删除线。
执行此操作的代码如下:
cell.RichText.Substring(index, length).SetFontColor(XLColor.Gray).SetStrikethrough();
或者我也可以使用:
cell.RichText.AddText("foo")
问题是我还需要删除 html 标签。
我的代码:
string pattern = @"<font color='gray'><s>(\d+)<\/s><\/font>";
foreach (IXLCell cell in ws.Columns("A").CellsUsed())
{
MatchCollection matches = Regex.Matches(cell.GetValue<string>(), pattern);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
cell.RichText.Substring(capture.Index, capture.Length).SetFontColor(XLColor.Gray).SetStrikethrough();
// only content in hmtl tags
// cell.RichText.Substring(capture.Index + "<font color='gray'><s>".Length, capture.Length - "</s></font>".Length - "<font color='gray'><s>".Length).SetFontColor(XLColor.Gray).SetStrikethrough();
}
}
}
它有效,但它保留了 html 标签(带灰色)。
我是这样解决的:
foreach (IXLCell cell in ws.Columns("A").CellsUsed())
{
List<Capture> captures = new List<Capture>();
MatchCollection matches = Regex.Matches(cell.GetValue<string>(), pattern);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
captures.Add(capture);
}
}
cell.Value = cell.GetValue<string>().Replace("<font color='gray'><s>", "").Replace("</s></font>", "");
int contatore = 0;
foreach (Capture capture in captures)
{
cell.RichText.Substring(capture.Index - contatore, capture.Length - "</s></font>".Length - "<font color='gray'><s>".Length).SetFontColor(XLColor.Gray).SetStrikethrough();
contatore += "<font color='gray'><s></s></font>".Length;
}
}