使用luckysheet在线处理复杂表格

一、luckysheet 和 univer 对比

luckysheet已经停止维护,univer 是luckysheet的后续更新版本,通过导入含有复杂计算公式的Excel发现,univer对复杂计算显示错误,有可能将该功能加入到了收费版本univer pro。故选择luckysheet来实现。

二、luckysheet引入

官网给出两种引入方式

  1. CDN方式
ini 复制代码
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script>
  1. npm run builddist文件夹下的所有文件复制到项目目录,然后通过相对路径引入
ini 复制代码
<link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='./plugins/plugins.css' />
<link rel='stylesheet' href='./css/luckysheet.css' />
<link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
<script src="./plugins/js/plugin.js"></script>
<script src="./luckysheet.umd.js"></script>

CDN方式在打包部署到离线环境后无法使用,故选择本地引入。

实现本地引入比较坎坷,遇到问题记录如下:

  1. 将luckysheet包存放在 public/luckysheet路径
xml 复制代码
<head>

<meta charset="UTF-8" />

<link rel="icon" href="/favicon.ico" />

<!-- 在这里全局引入luckysheet的样式文件和js文件 -->

<link rel="stylesheet" href="/public/luckysheet/plugins/css/pluginsCss.css" />

<link rel="stylesheet"  href="/public/luckysheet/plugins/plugins.css" />

<link rel="stylesheet" href="/public/luckysheet/css/luckysheet.css" />

<link  rel="stylesheet"  href="/public/luckysheet/assets/iconfont/iconfont.css" />

<script src="/public/luckysheet/plugins/js/plugin.js"></script>

<script src="/public/luckysheet/luckysheet.umd.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<title>Miou</title>

</head>

报错:

查询发现是 因为引入了不匹配的构建产物:Luckysheet 的 plugin.js 是 ESM(里面有 import),但你用普通

但是本地文件中并没有这一行。

发现这行代码中出现vite字样,应该是vit构建项目时加上去的,应该是与vite的预构建有关系,随后修改vit.config.ts文件,但是并没有解决。

  1. 尝试在vue文件中直接引入luckysheet

import luckysheet from 'luckysheet'

又报错 没有定义,导入 j Q u e r y 定义 没有定义, 导入jQuery定义 没有定义,导入jQuery定义后又报错 $(...).mousewheel is not a function, 因为luckysheet中引入了jQurey,代码中又引入了一次导致 插件没有挂到正确的 jQuery 实例上,折腾了半天各种矛盾遂放弃。

  1. 鬼使神差得成功了

考虑到

ini 复制代码
    <link rel="stylesheet" href="/luckysheet/plugins/css/pluginsCss.css" />
    <link rel="stylesheet" href="/luckysheet/plugins/plugins.css" />
    <link rel="stylesheet" href="/luckysheet/css/luckysheet.css" />
    <link rel="stylesheet" href="/luckysheet/assets/iconfont/iconfont.css" />
    <script type="text/javascript" src="/luckysheet/plugins/js/plugin.js"></script>
    <script type="text/javascript" src="/luckysheet/luckysheet.umd.js"></script>
  1. 复盘

根据 Vite 官方文档

  • 放置在 public 目录中的资源应该使用根绝对路径引用
  • 例如:public/icon.png 应该在源码中引用为 /icon.png
  • public 中的资源不会被处理,只是直接复制到打包目录
  • 保持开发和生产环境的一致性

虽然这是一个过时的库,但是完全开源,Excel中复杂计算也可以实现,严重怀疑改为univer就是为了收费。

出自基本功不踏实的一些碎碎念,完毕。

相关推荐
weixin_3823952317 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__17 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.17 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~18 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华19 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子21 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅21 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni1 天前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学1 天前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端