使用 ClosedXML C# 在范围内查找字符串
Find a string in a Range using ClosedXML C#
我希望能够使用 ClosedXML 查找特定字符串是否存在于某个范围内,但是,我在文档中找不到任何查找命令。目前我循环遍历 1000 行以查找字符串是否存在。有没有更有效的方法来做到这一点?
这是我的代码示例:
for (int j = 3; j <= PipeSheet.LastRowUsed().RowNumber(); j ++)
{
if ((PipeSheet.Cell(j, ProdCodeColumnInPipe).Value.ToString().Trim() == SheetToEdit.Cell(i, ProdCodeColumnInMain).Value.ToString().Trim() & PipeSheet.Cell(j, 3).Value.ToString().Trim() == SheetToEdit.Cell(i, RegionCodeInMain).Value.ToString().Trim()))
{
SheetToEdit.Cell(i, ColumnToEdit).Value = "+";
if ((new[] { "Open", "Under Review" }).Contains(PipeSheet.Cell(j, 5).Value.ToString().Trim()) & (new[] { "Forecast"}).Contains(PipeSheet.Cell(j, 4).Value.ToString().Trim()))
{
if (FirstColumnHighlight > 1 & LastColumnHighlight > 1)
{
for (int k = FirstColumnHighlight; k <= LastColumnHighlight; k++)
{
SheetToEdit.Cell(i, k).Style.Fill.BackgroundColor = XLColor.FromArgb(255, 255, 0);
}
}
}
}
}
首先,您的目标最好使用条件格式来解决。
但是要回答你的问题,你可以搜索一个字符串:
sheet.CellsUsed(cell => cell.GetString() == searchstring)
参考:https://github.com/ClosedXML/ClosedXML/wiki/Better-lambdas
-- 更新--
在 https://github.com/ClosedXML/ClosedXML/pull/399 有一个拉取请求来帮助解决这个问题,例如:
foundCells = ws.Search("searchText", CompareOptions.OrdinalIgnoreCase);
我希望能够使用 ClosedXML 查找特定字符串是否存在于某个范围内,但是,我在文档中找不到任何查找命令。目前我循环遍历 1000 行以查找字符串是否存在。有没有更有效的方法来做到这一点?
这是我的代码示例:
for (int j = 3; j <= PipeSheet.LastRowUsed().RowNumber(); j ++)
{
if ((PipeSheet.Cell(j, ProdCodeColumnInPipe).Value.ToString().Trim() == SheetToEdit.Cell(i, ProdCodeColumnInMain).Value.ToString().Trim() & PipeSheet.Cell(j, 3).Value.ToString().Trim() == SheetToEdit.Cell(i, RegionCodeInMain).Value.ToString().Trim()))
{
SheetToEdit.Cell(i, ColumnToEdit).Value = "+";
if ((new[] { "Open", "Under Review" }).Contains(PipeSheet.Cell(j, 5).Value.ToString().Trim()) & (new[] { "Forecast"}).Contains(PipeSheet.Cell(j, 4).Value.ToString().Trim()))
{
if (FirstColumnHighlight > 1 & LastColumnHighlight > 1)
{
for (int k = FirstColumnHighlight; k <= LastColumnHighlight; k++)
{
SheetToEdit.Cell(i, k).Style.Fill.BackgroundColor = XLColor.FromArgb(255, 255, 0);
}
}
}
}
}
首先,您的目标最好使用条件格式来解决。
但是要回答你的问题,你可以搜索一个字符串:
sheet.CellsUsed(cell => cell.GetString() == searchstring)
参考:https://github.com/ClosedXML/ClosedXML/wiki/Better-lambdas
-- 更新--
在 https://github.com/ClosedXML/ClosedXML/pull/399 有一个拉取请求来帮助解决这个问题,例如:
foundCells = ws.Search("searchText", CompareOptions.OrdinalIgnoreCase);