Skip to content

AiExcelEditor

AiExcelEditor 是基于 vxe-table 封装的 Vue 电子表格编辑器。编辑内容会先保留在组件内部,仅在用户保存后触发 update:modelValue,避免每次单元格输入时重复渲染外层组件树。

安装依赖

组件使用 Vue 原生表格引擎,不依赖 React。安装组件库时会一并安装所需依赖;单独开发该组件时可执行:

bash
npm install vxe-table xe-utils

Vue2.6 + Lingxi SDK 示例

使用方式

ts
import { AiExcelEditor } from '@zhiyongui/lingxi-ui'
import '@zhiyongui/lingxi-ui/ai-excel-editor/style.css'
vue
<AiExcelEditor
  v-model="workbook"
  title="销售工作簿"
  :height="520"
  editable
  @save="handleSave"
  @export="handleExport"
/>

工作簿协议

ts
interface AiExcelWorkbook {
  id?: string
  name?: string
  sheets: AiExcelSheet[]
  activeSheetId?: string
  meta?: Record<string, unknown>
}

interface AiExcelSheet {
  id: string
  name: string
  rows?: number
  cols?: number
  cells: Record<string, AiExcelCell>
}

单元格键名使用 A1 表示法,例如 A1B2AA12

API 标准表

Props

属性类型默认值说明
modelValueAiExcelWorkbookundefined受控工作簿数据。
titlestringundefined编辑器标题。
heightstring | number480编辑器高度。
editablebooleantrue是否启用编辑。
readonlybooleanfalse强制只读。
autoSavebooleanfalse编辑后自动保存。
optionsRecord<string, unknown>undefined额外 VXE Grid 选项。
importerAiExcelImporterundefined自定义文件导入函数。
exporterAiExcelExporterundefined自定义工作簿导出函数。
labelsAiExcelEditorLabelsundefined文案覆盖。

Events

事件参数说明
update:modelValueworkbook工作簿提交到外层模型。
saveworkbook保存或自动保存。
changeworkbook保存后的工作簿变化。
exporttype, payload, workbook导出完成。
errorunknown导入或导出异常。

Slots

当前无公开 slot。

Exposes

方法参数说明
save()-保存当前工作簿,并触发 saveupdate:modelValuechange
reset()-恢复到上次保存状态。
exportWorkbook(type)AiExcelExportType导出工作簿。
getWorkbook()-获取当前工作簿。
getDirty()-返回是否存在未保存修改。

样式入口

ts
import '@zhiyongui/lingxi-ui/ai-excel-editor/style.css'

FAQ

为什么编辑单元格后外层 modelValue 没立即变化?

编辑器会维护内部草稿。手动保存或开启 autoSave 后才会提交给外层。