查找替换
查找替换功能允许用户在电子表格中快速查找特定内容并进行替换,支持多种匹配方式和选项,帮助用户高效处理数据。
可在下方完整插件示例中打开查找与替换面板,体验此功能。
插件模式
安装
Shell
pnpm add @univerjs/find-replace @univerjs/sheets-find-replaceShell
npm install @univerjs/find-replace @univerjs/sheets-find-replaceShell
yarn add @univerjs/find-replace @univerjs/sheets-find-replaceShell
bun add @univerjs/find-replace @univerjs/sheets-find-replace使用
TypeScript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { UniverFindReplacePlugin } from '@univerjs/find-replace'import FindReplaceZhCN from '@univerjs/find-replace/locale/zh-CN'import { UniverSheetsFindReplacePlugin } from '@univerjs/sheets-find-replace'import '@univerjs/find-replace/lib/index.css'import '@univerjs/sheets-find-replace/facade'const univer = new Univer({ locale: LocaleType.ZH_CN, locales: { [LocaleType.ZH_CN]: mergeLocales( FindReplaceZhCN, ), },})univer.registerPlugin(UniverFindReplacePlugin)univer.registerPlugin(UniverSheetsFindReplacePlugin)移动端适配
先配置移动端编辑器。在本页插件模式的初始化代码中,将下列桌面端注册替换为同一个包导出的移动端插件,并在打开文档前完成。保留模型插件、样式、语言包和 Facade 导入,不要同时注册两个版本。
| 来源包 | 桌面端注册 | 移动端注册 |
|---|---|---|
@univerjs/find-replace | UniverFindReplacePlugin | UniverFindReplaceMobileUIPlugin |
@univerjs/sheets-find-replace | UniverSheetsFindReplacePlugin | UniverSheetsFindReplaceMobileUIPlugin |
预设模式
安装
Shell
pnpm add @univerjs/preset-sheets-find-replaceShell
npm install @univerjs/preset-sheets-find-replaceShell
yarn add @univerjs/preset-sheets-find-replaceShell
bun add @univerjs/preset-sheets-find-replace使用
TypeScript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreZhCN from '@univerjs/preset-sheets-core/locales/zh-CN'import { UniverSheetsFindReplacePreset } from '@univerjs/preset-sheets-find-replace'import UniverPresetSheetsFindReplaceZhCN from '@univerjs/preset-sheets-find-replace/locales/zh-CN'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-find-replace/lib/index.css'const { univerAPI } = createUniver({ locale: LocaleType.ZH_CN, locales: { [LocaleType.ZH_CN]: mergeLocales( UniverPresetSheetsCoreZhCN, UniverPresetSheetsFindReplaceZhCN, ), }, presets: [ UniverSheetsCorePreset(), UniverSheetsFindReplacePreset(), ],})Facade API
完整 Facade API 类型定义,请查看 FacadeAPI
引入
插件模式提示
仅插件模式需要手动引入 Facade 包。预设模式已内置对应的 Facade 包,无需额外导入。
TypeScript
import '@univerjs/sheets-find-replace/facade'创建文本查找器
univerAPI.createTextFinderAsync() 创建一个文本查找器,返回一个 FTextFinder 实例。
以下是 FTextFinder 上的一些成员方法:
| 方法 | 描述 |
|---|---|
| findAll | 获取当前表格中所有匹配的单元格,当前匹配的单元格是最后一个匹配的单元格 |
| findNext | 获取当前表格中下一个匹配的单元格,如果存在则返回下一个匹配的单元格,并将当前匹配的单元格移动到下一个匹配的单元格 |
| findPrevious | 获取当前表格中上一个匹配的单元格,如果存在则返回上一个匹配的单元格,并将当前匹配的单元格移动到上一个匹配的单元格 |
| getCurrentMatch | 获取当前表格中当前匹配的单元格 |
| matchCaseAsync | 设置匹配大小写选项,如果为 true,则查找操作将匹配大小写,否则查找操作将忽略大小写 |
| matchEntireCellAsync | 设置匹配整个单元格选项,如果为 true,则查找操作将匹配整个单元格的值,否则查找操作将匹配单元格值的一部分 |
| matchFormulaTextAsync | 设置匹配公式文本选项,如果为 true,则查找操作将匹配公式文本,否则查找操作将匹配值 |
| replaceAllWithAsync | 替换所有匹配的文本为给定文本 |
| replaceWithAsync | 替换当前匹配的文本为给定文本 |
| ensureCompleteAsync | 确保查找操作已完成。特别是当当前表格更改时,请使用此方法确保查找操作已完成 |
TypeScript
// 假设当前表格是空表const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// 设置一些值到 A1:D10 范围内const fRange = fWorksheet.getRange('A1:D10')fRange.setValues([ [1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8], [6, 7, 8, 9], [7, 8, 9, 10], [8, 9, 10, 11], [9, 10, 11, 12], [10, 11, 12, 13],])// 创建一个查找文本 '5' 的查找器const textFinder = await univerAPI.createTextFinderAsync('5')// 找到所有包含文本 '5' 的单元格const matchCells = textFinder.findAll()matchCells.forEach((cell) => { cell.getA1Notation() // D2, C3, B4, A5})你觉得这篇文档如何?