0

我正在尝试使用 gembox 更新 excel 文件。我希望 gembox 在 excel 文件中搜索某个字符串,并更新所有匹配项。但是方法FindText()只返回第一次出现。

我尝试了以下方法,但它会导致无限循环,由于某种原因,行和列不会更新到下一个搜索结果。

  private void RenameSubCategory(ExcelWorksheet sheet, string subCategoryOld, string subCategoryNew)
  {
     int row, column;
     while (sheet.Cells.FindText(subCategoryOld, false, false, out row, out column)) {
        sheet.Cells[row, column].Value = subCategoryNew;
     }
  }
4

1 回答 1

1

您的subCategoryNew文本是否可能包含subCategoryOld文本?
换句话说,您是否可能有以下情况:

RenameSubCategory(sheet, "Sample", "Sample New");

这将导致无限循环,因为您总是会"Sample"在设置为"Sample New"文本的单元格中找到。
而是尝试使用其中一种ReplaceText方法,如下所示:

sheet.Cells.ReplaceText("Sample", "Sample New");

或尝试使用以下内容:

private static void RenameSubCategory(ExcelWorksheet sheet, string subCategoryOld, string subCategoryNew)
{
    foreach (ExcelRow row in sheet.Rows)
        foreach (ExcelCell cell in row.AllocatedCells)
            if (cell.ValueType == CellValueType.String &&
                cell.StringValue.Contains(subCategoryOld))
                cell.Value = subCategoryNew;
}

我希望这有帮助。

于 2017-05-08T05:53:04.683 回答