开发预览 更新于 2026-05-10

Spreadsheet 表格编辑器

A1 风格可编辑网格 —— 多选、键盘导航(方向键 / Tab / Enter / F2 / Delete)、Cmd+C/V 与系统剪贴板互通。

基础用法

v-model 绑定一个以 A1 字符串为 key 的扁平 Record<string, string>。组件给你一张可编辑的网格:

  • 单击一格 → 选中
  • 拖拽 / Shift+点击 → 选择区域
  • 双击 / Enter / F2 → 编辑当前格
  • 方向键 / Tab → 移动焦点
  • Delete / Backspace → 清空选区
  • Cmd/Ctrl + C / X / V → 与系统剪贴板互通 TSV

单击选中、双击编辑、方向键移动、Tab/Enter 确认;Cmd/Ctrl + C / V 在选区与剪贴板间复制粘贴 TSV。

A1A1
A
B
C
D
E
1
产品
区域
销量
2
A
华北
120
3
B
华东
230
4
C
华南
180
5
6
7
8
9
10

与外部表格互通

剪贴板格式是标准 TSV(tab 分隔的文本),所以可以直接和 Excel / Numbers / Google Sheets 互拷数据:

A1A1
A
B
C
D
E
1
2
3
4
5
6
7
8
9
10

试试:在 Excel / Numbers / Sheets 选一段复制,到这里 Cmd/Ctrl+V 粘贴;反向 Cmd/Ctrl+C 也能拷出去。

API

Prop类型默认说明
modelValue (Vue) / modelValue + onChange (React)Record<string, string>{}A1 键值映射
rowsnumber20行数
colsnumber10列数
colWidthnumber120单列像素宽度
rowHeightnumber28单行像素高度
rowHeaderWidthnumber44行号栏宽度
readonlybooleanfalse只读模式(禁止编辑 / 删除 / 粘贴)
disableClipboardbooleanfalse关闭 Cmd+C / V 与系统剪贴板的桥接
captionstring顶部说明
size'sm' | 'md' | 'lg''md'字号档位

事件:

  • Vue: @update:modelValue(next) / @cell-change({ cell, value }) / @selection-change(range)
  • React: onChange / onCellChange / onSelectionChange

工具函数

import { toA1, colLetter, rangeToTSV, tsvToData } from '@chufix-design/vue';

toA1(0, 0);        // 'A1'
colLetter(27);     // 'AB'
rangeToTSV(data, { start: { col: 0, row: 0 }, end: { col: 2, row: 4 } });
tsvToData('1\t2\n3\t4', { col: 0, row: 0 }, { cols: 10, rows: 20 });

剪贴板桥接和工具函数都是纯函数,可以脱离组件直接复用。

键盘表

按键行为
/ / / 移动选区焦点(按住 Shift 扩展选区)
Tab / Shift+Tab横向移动
Enter / F2编辑当前格;编辑中 Enter 提交并下移
Esc取消正在进行的编辑
Delete / Backspace清空选区内的所有单元格
任意可见字符直接进入编辑态并以该字符开头
Cmd/Ctrl + C / X / V与系统剪贴板互通 TSV
Cmd/Ctrl + A全选

反馈与讨论

Spreadsheet 表格编辑器 的讨论

0
0 / 600
一键发送
正在加载评论...