使用ClosedXML C#在Range中查找字符串

djb*_*ois 2 c# excel closedxml

我希望能够使用ClosedXML查找某个范围内是否存在特定字符串,但是,我在文档中找不到任何find命令.目前我循环遍历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);
                        }
                  }
           }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*tha 6

首先,使用条件格式最好地解决您的目标.

但要回答您的问题,您可以搜索字符串:

sheet.CellsUsed(cell => cell.GetString() == searchstring)
Run Code Online (Sandbox Code Playgroud)

参考:https://github.com/ClosedXML/ClosedXML/wiki/Better-lambdas

- 更新 -

https://github.com/ClosedXML/ClosedXML/pull/399上有一个拉取请求来帮助解决这个问题,例如:

 foundCells = ws.Search("searchText", CompareOptions.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)