使用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就是为了收费。

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

相关推荐
狼爷8 分钟前
前端项目从 Windows 到 Linux:构建失败的陷阱
前端·node.js·angular.js
1024小神10 分钟前
vitepress多语言实现第一次跟随浏览器,第二次不跟随
前端
叫我詹躲躲12 分钟前
🚀 震撼!10道DFS&BFS神级题目让你的算法能力飙升300%
前端·leetcode
ssshooter13 分钟前
WebGL 切换 Shader 的策略
前端·webgl
WDyinh15 分钟前
积分球领取补位动画实现
前端·javascript
前端开发爱好者19 分钟前
v5.0 版本发布!Vue3 生态最强大的 3D 开发框架!
前端·javascript·vue.js
Sosse26 分钟前
window.close()失效 + Chrome浏览器调试线上代码
前端·浏览器
干就完事了36 分钟前
Edge 浏览器安装selenium
前端·selenium·edge
IT_陈寒2 小时前
Vue3性能优化实战:这5个技巧让我的应用加载速度提升70%
前端·人工智能·后端
mumu1307梦2 小时前
html 占位符
前端·javascript·html