使用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'

又报错 <math xmlns="http://www.w3.org/1998/Math/MathML"> 没有定义,导入 j Q u e r y 定义 没有定义, 导入jQuery定义 </math>没有定义,导入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就是为了收费。

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

相关推荐
万少11 小时前
HarmonyOS官方模板集成创新活动-流蓝卡片
前端·harmonyos
-To be number.wan13 小时前
C++ 赋值运算符重载:深拷贝 vs 浅拷贝的生死线!
前端·c++
噢,我明白了13 小时前
JavaScript 中处理时间格式的核心方式
前端·javascript
纸上的彩虹14 小时前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
be or not to be15 小时前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied15 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞15 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_233315 小时前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
GIS之路16 小时前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL16 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端