Поиск в документе
Для поиска в текстовом или табличном документе необходимо создать экземпляр класса Search посредством вызова DocumentAPI.createSearch(document), затем использовать метод Search:findText (см. Рисунок).
Примеры поиска в документе
search = DocumentAPI.createSearch(document)
text = "English"
-- Поиск по всему документу
ranges = search:findText(text)
-- Поиск с учетом регистра
ranges = search:findText(text, DocumentAPI.CaseSensitive_No)
-- Поиск в диапазоне
local range = document:getBlocks():getBlock(0):getRange()
ranges = search:findText(text, range)
-- Поиск в диапазоне с учетом регистра
local range = document:getBlocks():getBlock(0):getRange()
ranges = search:findText(text, range, DocumentAPI.CaseSensitive_No)
-- Поиск в диапазоне ячеек
local table = document:getBlocks():getTable(0)
local cellRange = table:getCellRange("A1:B3")
ranges = search:findText(text, cellRange)
-- Поиск в диапазоне ячеек с учетом регистра
local table = document:getBlocks():getTable(0)
local cellRange = table:getCellRange("A1:B3")
ranges = search:findText(text, cellRange, DocumentAPI.CaseSensitive_Yes)
-- Поиск в таблице
local table = document:getBlocks():getTable(0)
ranges = search:findText(text, table)
-- Поиск в таблице с учетом регистра
local table = document:getBlocks():getTable(0)
ranges = search:findText(text, table, DocumentAPI.CaseSensitive_Yes)
-- Отображение результата поиска
for occurrence in ranges do
print(occurrence:extractText())
end
Для поиска ячеек в табличном документе используйте методы Table:find и CellRange:find.
Пример поиска ячеек в табличном документе
local sheet = document:getBlocks():getTable(0)
local searchProps = DocumentAPI.TableSearchSettings()
searchProps.caseSensitive = DocumentAPI.CaseSensitive_No
searchProps.matchBehaviour = DocumentAPI.TableSearchSettings.MatchBehaviour_Glob
searchProps.searchIn = DocumentAPI.TableSearchSettings.SearchProperty_Value
searchProps.wholeWords = true
local results = sheet:find("*eye", searchProps)
for cell in results do
print(cell:getFormattedValue()) -- Steeleye Stout
end
Пример форматирования результатов поиска
local sheet = document:getBlocks():getTable(0)
local search = DocumentAPI.createSearch(document)
local template = "МойОфис"
local ranges = search:findText(template, sheet)
for range in ranges do
local props = range:getTextProperties()
props.bold = true
range:setTextProperties(props)
end