Univer 数据校验 Preset 使用指南:基于 @univerjs/preset-sheets-data-validation 快速集成数据验证能力

发布时间:2026/9/15 1:36:21

Univer 数据校验 Preset 使用指南:基于 @univerjs/preset-sheets-data-validation 快速集成数据验证能力 Univer 数据校验 Preset 使用指南基于 univerjs/preset-sheets-data-validation 快速集成数据验证能力【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univeruniverjs/preset-sheets-data-validation是 Univer 官方为 Sheets 数据校验Data Validation能力提供的开箱即用预设包。本文以该包的 README 为骨架结合仓库源码与真实示例系统讲解它的安装方式、在createUniver中的接入流程、可配置项及底层插件组成帮助你以最少的代码为 Univer 表格接入下拉选择、规则校验等数据验证功能。包概览一个 Preset 带来的完整能力集Preset预设是 Univer 提供的一种“按功能聚合插件”的分发方式。开发者无需手动逐个注册数据校验相关的插件只需引入UniverSheetsDataValidationPreset()工厂函数即可。按照 README 中的包信息表该包具备以下特征维度说明CSS需要引入样式文件见 package.json 的sideEffects: [*.css]Locales内置多语言中文、英文等通过./locales/*子路径导出Facade entry提供 Facade 入口即FUniver层的 API 扩展从源码看一个 Preset 本质上是一个IPreset对象其核心逻辑在 preset.ts 中它把三个底层插件打包在一起同时通过 index.ts 统一 re-export 了这些插件的全部导出并额外导入了univerjs/sheets-data-validation/facade使 Facade API 生效。安装与版本约束安装命令与 README 一致pnpm add univerjs/preset-sheets-data-validation # 或 npm install univerjs/preset-sheets-data-validationREADME 中特别强调了一条重要的版本约定保持所有univerjs/*包在同一版本。这在该包的 package.json 中也有体现——它通过workspace:*依赖了三个底层包peerDependencies 则要求react ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0、rxjs 7.0.0说明该预设运行在 React 生态之上Univer 的 UI 层基于 React 实现使用前需确保项目满足这些依赖版本。快速接入一行 Preset 开启数据校验README 给出了最核心的用法——在createUniver的presets数组中传入UniverSheetsDataValidationPreset()import { UniverSheetsDataValidationPreset } from univerjs/preset-sheets-data-validation; // 与 createUniver 配合使用 createUniver({ presets: [UniverSheetsDataValidationPreset()] });仓库中的真实示例 examples/src/preset-sheets-core/main.ts 展示了更完整的接入形态——与其他 Sheets 预设并列注册并合并多语言资源import UniverPresetSheetsDataValidationZhCN from univerjs/preset-sheets-data-validation/locales/zh-CN; // ... const { univer, univerAPI } createUniver({ locale: LocaleType.ZH_CN, locales: { zhCN: mergeLocales( UniverPresetSheetsCoreZhCN, // ... UniverPresetSheetsDataValidationZhCN, // ... ), }, theme: defaultTheme, presets: [ UniverSheetsCorePreset(), // ... UniverSheetsDataValidationPreset(), // ... ], }); univerAPI.createWorkbook({ name: Test Sheet });这里有两个关键细节值得注意多语言资源需要手动合并Preset 本身不会自动注入 locale 文本你需要通过univerjs/preset-sheets-data-validation/locales/zh-CN之类的子路径导入再用mergeLocales合并到createUniver的locales配置中。这与 README 中“Locales: Yes”的表格说明相呼应。Preset 只负责“注册”工作簿仍需你创建UniverSheetsDataValidationPreset()只完成插件装配表格实例要另外通过univerAPI.createWorkbook(...)创建。配置项解析控制下拉面板的编辑与搜索入口UniverSheetsDataValidationPreset工厂函数接受一个可选配置对象其类型定义于 preset.tsexport interface IUniverSheetsDataValidationPresetConfig extends PickIUniverSheetsDataValidationUIConfig, showEditOnDropdown | showSearchOnDropdown { }也就是说该 Preset 对外暴露两个配置项均用于控制下拉选项面板的交互元素showEditOnDropdown是否在下拉面板中显示“编辑”入口。默认值为true依据 dropdown-manager.service.ts 中?? true的兜底逻辑。showSearchOnDropdown是否在下拉面板中显示“搜索”框用于在大量选项中快速过滤。默认值同样为true。这两个配置项最终会被透传给底层 UI 插件UniverSheetsDataValidationUIPlugin见 preset.ts并通过IConfigService存储为SHEETS_DATA_VALIDATION_UI_PLUGIN_CONFIG_KEY对应的配置在渲染下拉面板时被读取。如果你的场景希望隐藏这些入口例如面向终端用户的只读校验场景可以这样关闭UniverSheetsDataValidationPreset({ showEditOnDropdown: false, showSearchOnDropdown: false, })底层组成Preset 背后打包的三个插件从 preset.ts 的plugins数组可以看到该 Preset 实际聚合了三个插件它们分工明确、层层递进插件职责关键源码位置UniverDataValidationPlugin数据校验核心逻辑校验模型、校验器注册表、增删改命令data-validation/src/plugin.tsUniverSheetsDataValidationPluginSheets 场景适配将规则绑定到工作表/单元格范围packages/sheets-data-validation包UniverSheetsDataValidationUIPluginUI 层右键菜单、下拉面板、编辑对话框等交互packages/sheets-data-validation-ui包以核心插件UniverDataValidationPlugin为例从 plugin.ts 可以看到它的装配逻辑注册DataValidationModel规则数据模型、DataValidatorRegistryService校验器注册中心、DataValidationResourceController资源序列化/反序列化控制器并注册三条 Mutation 命令——AddDataValidationMutation、UpdateDataValidationMutation、RemoveDataValidationMutation对应数据校验规则的增、改、删。而UniverSheetsDataValidationUIPlugin则承载了前端交互其配置接口IUniverSheetsDataValidationUIConfig定义在 config.tsPreset 的showEditOnDropdown/showSearchOnDropdown正是从这里继承而来。Facade API用 FUniver 编程式操作校验规则README 的包信息表中标注了该 Preset 提供 Facade entry。这意味着一方面index.ts 直接export * from univerjs/data-validation等三个包的全部导出另一方面preset.ts 中执行了import univerjs/sheets-data-validation/facade将 Facade 扩展注册进FUniver。从源码结构看packages/sheets-data-validation/src/facade/目录下提供了一系列面向用户的 API 扩展包括f-range.ts在FRange上扩展数据校验相关方法如setDataValidator类方法f-worksheet.ts/f-workbook.ts在工作表、工作簿层级暴露规则管理入口f-data-validation.ts/f-data-validation-builder.ts规则对象与其构建器f-univer.ts/f-event.ts全局入口与校验事件订阅。因此接入 Preset 后你可以在univerAPI上以链式或声明式的方式创建校验规则、绑定到指定 Range实现“代码驱动”的数据校验而不必手动实例化底层插件。与 Web Worker 模式的兼容性Univer 支持将核心计算放到 Web Worker 中运行。仓库中 examples/src/preset-sheets-core-with-worker/main.ts 展示了在 Worker 模式下如何接入该 Presetpresets: [ UniverSheetsCorePreset({ workerURL: new Worker(new URL(./worker.js, import.meta.url), { type: module }), }), // ... UniverSheetsDataValidationPreset(), // ... ],可以看到UniverSheetsDataValidationPreset()的用法在 Worker 模式下与普通模式完全一致无需任何额外参数——数据校验规则会随工作簿资源一起在主线程与 Worker 之间同步资源序列化由DataValidationResourceController负责见 dv-resource.controller.ts。进阶探索指引如果你想深入数据校验的实现细节建议继续阅读以下仓库资源核心规则模型与变更命令data-validation-model.ts、data-validation.mutation.ts校验器注册与行为定义data-validator-registry.service.ts、validators 目录集成测试与行为测试data-validation.integration.spec.ts、data-validator.behavior.spec.tsFacade 层 API 测试f-range.spec.ts、f-data-validation-builder.spec.ts小结univerjs/preset-sheets-data-validation的价值在于把“数据校验”这一横跨核心、Sheets 适配、UI 交互三层的复杂能力收敛为一个函数调用。你只需记住三条要点即可完成集成通过 pnpm/npm 安装并保持univerjs/*版本一致在createUniver的presets中调用UniverSheetsDataValidationPreset()按需通过locales/*子路径合并多语言资源。之后无论是下拉校验、条件规则还是通过 Facade 编程式管理规则都由底层三个插件协同完成。【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 1:36:21

Java System类详解:系统级操作与性能优化

1. System类概述:Java中的系统级操作入口System类是Java标准库中最基础也最强大的API之一,它位于java.lang包中(因此无需显式导入),提供了与系统交互的各种静态方法。这个类就像是一个万能工具箱,包含了&am…

2026/9/15 1:36:21

Flask框架核心组件与Web开发实践指南

1. Flask框架概述Flask是一个轻量级的Python Web框架,它基于Werkzeug WSGI工具包和Jinja2模板引擎构建。作为Python生态中最受欢迎的Web框架之一,Flask以其简洁、灵活的特性赢得了大量开发者的青睐。Flask的核心设计哲学是"微内核"——它只提供…

2026/9/15 1:51:22

极简TCP/IP协议栈实现与嵌入式应用解析

1. 极简TCP/IP协议栈的核心价值在互联网通信的底层世界里,TCP/IP协议栈就像城市地下的管网系统。作为从业15年的网络工程师,我见过太多开发者因为对底层协议理解不足而导致的性能问题。这个极简实现方案,就是要带你看清数据包从网卡到应用层的…

2026/9/15 1:51:22

C++17编译期正则表达式实现与优化

1. 编译期正则表达式概述在C17标准之前,正则表达式匹配通常需要在运行时进行模式解析和匹配操作。这种动态处理方式虽然灵活,但会带来一定的性能开销。编译期正则表达式(Compile-time Regular Expressions)正是为了解决这一问题而…

2026/9/15 1:51:22

靠谱健康资讯网站先收藏原站再放扫描层

靠谱的健康资讯网站:先收藏原站,再放一个扫描层 有。靠谱的健康资讯网站通常是一份组合,而不是某一个「总第一」。原站负责发布和最终口径,例如人民网健康、健康报、新华网健康、中国新闻网健康、光明网健康等公开渠道的原文&…

2026/9/15 1:51:22

ESP32+ESP-NOW足球机器人遥控器低延迟通信实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 1:51:22

YAML配置文件语法详解与最佳实践

1. YAML配置文件基础认知 YAML(YAML Aint Markup Language)作为一种人类友好的数据序列化标准,近年来在各类技术栈中广泛应用。我最初接触YAML是在2015年一个容器化项目中,当时就被它简洁的格式所吸引。相比JSON和XML&#xff0c…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码