Поиск в документе
Для поиска диапазона в текстовом или табличном документе необходимо создать экземпляр класса Search посредством вызова createSearch(document), затем использовать метод Search.findText (см. Рисунок).
Примеры поиска в документе
// Поиск по всему документу
Search search = DocumentAPI.createSearch(document);
RangesEnumerator searchResult = search.findText("API", CaseSensitive.Yes);
// Поиск в диапазоне блока
Range firstBlockRange = document.getBlocks().getBlock(0).getRange();
Search search = DocumentAPI.createSearch(document);
RangesEnumerator searchResult = search.findText("API", firstBlockRange, CaseSensitive.No);
// Поиск в диапазоне ячеек
Table table = document.getBlocks().getTable(0);
CellRange cellRange = table.getCellRange("A1:B2");
Search search = DocumentAPI.createSearch(document);
RangesEnumerator searchResult = search.findText("API", cellRange, CaseSensitive.Yes);
// Поиск в таблице
Table table = document.getBlocks().getTable(0);
Search search = DocumentAPI.createSearch(document);
RangesEnumerator searchResult = search.findText("API", table, CaseSensitive.Yes);
// Отображение результатов поиска
while (searchResult.MoveNext())
{
var range = searchResult.Current;
Console.WriteLine(range.extractText());
}
Для поиска ячеек в табличном документе используйте методы Table.find и CellRange.find.
Пример поиска ячеек в табличном документе
Table sheet = document.getBlocks().getTable(0);
TableSearchSettings searchProps = new TableSearchSettings();
searchProps.caseSensitive = CaseSensitive.No;
searchProps.matchBehaviour = TableSearchSettings.MatchBehaviour.Glob;
searchProps.searchIn = TableSearchSettings.SearchProperty.Value;
searchProps.wholeWords = true;
CellsEnumerator results = sheet.find("*eye", searchProps);
foreach (Cell cell in results)
{
Console.WriteLine(cell.getFormattedValue()); // Steeleye Stout
}
Пример форматирования результатов поиска
Table sheet = document.getBlocks().getTable(0);
Search search = DocumentAPI.createSearch(document);
string template = "МойОфис";
var ranges = search.findText(template, sheet);
foreach (Range range in ranges)
{
TextProperties props = range.getTextProperties();
props.bold = true;
range.setTextProperties(props);
}