@lowcodex/gen-sheet
v0.1.0
Published
电子表格组件(迁移自 platform-sheet spread-sheet 4.15.0):Canvas 渲染引擎 + 公式引擎,外围 UI 逐步替换为 gen-ui
Maintainers
Readme
@lowcodex/gen-sheet
电子表格组件,迁移自 platform-sheet @platform/spread-sheet-min 4.15.0(x-data-spreadsheet 深度魔改分支)。Canvas 渲染引擎 + 229 个公式函数原样保留,Vue2/Element-UI 外壳全部重写为 React + @lowcodex/gen-ui。
使用
import {GenSheet, type GenSheetHandle} from '@lowcodex/gen-sheet';
import '@lowcodex/gen-sheet/css/gen-sheet.css'; // 引擎样式
import '@lowcodex/gen-sheet/css/iconfont.css'; // 工具栏图标字体
function App() {
const ref = React.useRef<GenSheetHandle>(null);
React.useEffect(() => {
ref.current!.init({/* 引擎 options */}, /* sheetData */);
}, []);
return <GenSheet ref={ref} isHasRect showRectType onChange={args => {...}} />;
}不经 React 也可用纯 JS 挂载:mountSheet(el, config, sheetData, {change, 'cell-selected', ...})。
API 面(对齐原 spread-sheet)
- 组件 props:
isEdit / isHasForm / showFieldName / isHasRect / showRectType / showFold / showRbFieldName / ctrlActionEnable+ 事件回调(onChange/onCellSelected/onSelectCellItem/...)+onMessage(原$message出口) - ref 句柄:
init / getSpreadsheet / resetExcelData / renderCom / syncViewRange / getCellRange / rectConfig / getRectTable / getCtrlRect等(与原 index.vue + mixins/rectUnit 同名同签名) - 纯 JS:
Spreadsheet / DataProxy / CellRange / Validator / Print / format / helper / alphabet / Formula / infixExprToSuffixExpr / ERRORTYPES / BigNumber / md5 - 深穿透兼容:
getSpreadsheet().sheet.data.formConfig等引擎内部路径与原版一致(宿主红线,见 docs-arch/gen-sheet迁移实现计划.md 5.2)
与原包的差异(均为主动决策)
SpreadSheet从 Vue 组件变为 React 组件(GenSheet的兼容别名),installVue 插件移除;- luckyexcel/jszip 与工具栏 Import 项移除(xlsx 导入裁剪);
- inform 填报表单层不迁移(
getFormData()恒返回 undefined,相关 props 保留兼容无 UI); - luckysheet 双向转换(transform)移除;
- content-search 为原包死代码(零引用),未迁移;
- 工具栏按钮属性
data-tooltip→data-tip(避开 gen-renderer 主题的全局属性提示样式);tooltip 单例化防 DOM 重建残留。
构建
pnpm build:rolldown 双产物(lib/esm,不跑 dts,类型为手写 index.d.ts)+ dart-sass 编译 css/gen-sheet.css + iconfont/雪碧图随包发布。
发布:npm publish(版本先于根目录统一约定)。
