Skip to main content

Поиск в документе

Для поиска в текстовом или табличном документе необходимо создать экземпляр класса 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