最近碰到个须要自动生成表格的任务,做为前端的我,就想在 node 和浏览器中生成强大的表格,因此特此研究了不少关于表格的 npm 库
npm install
html
npm install -g nodemon
前端
调试使用,替代 node 命令,实现保存文件,node 自动从新启动执行,必须全局安装才能运行vue
nodemon app.js
node
由于每次生成完表格,每次都须要打开表格查看样式,在 windows 电脑中,打开表格以后就锁定不能生成新文件了,原本想着能导出一个 html 文件对应表格的样式react
vscode 中打开调试右侧设置编辑,将下方代码复制进去,点 nodemon 启动就能够进行 debug 调试了webpack
{ "type": "node", "request": "launch", "name": "nodemon", "runtimeExecutable": "nodemon", "program": "${workspaceFolder}/app.js", "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "skipFiles": ["<node_internals>/**"] },
每次生成完新表格,都须要从新打开表格查看样式,在 windows 电脑中,打开表格以后就锁定了,再次生成新表格就会报错,文件已锁定,不能写入,对于想偷懒的我,能不能实现像 webpack 热更新功能那种,修改样式 js 页面自动更新呢?git
wps 自带另存 html 文件功能,可是没有提供生成的 api ,网上也搜索不到对应的转换功能,
原本觉得本身要实现一套表格转 html 的功能。经过不断尝试,偶然间发现手机浏览器能够直接打开预览 xlsx 文件,心里狂喜啊github
进入 webpack 目录安装依赖包,安装好以后执行web
npm run dev
chrome
启动成功以后,会自动打开带有 ip 地址的预览地址,此时在电脑浏览器会自动下载 xlsx 文件,忽略无论,用手机直接打开此地址,就能看到 xlsx 表格的内容了,而且每次新修改内容和样式,都会自动刷新页面显示新表格.
谷歌浏览器插件:
浏览器中实现生成 xlsx 表格方法
进入 browser 目录安装依赖包,安装好以后执行
npm run dev
启动成功以后,拖动根目录 src 下的李四表格到页面上的输入框里,成功生成表格以后会生成一个下载连接地址,右键在新标签页打开连接,即会生成一个新的表格文件出来,完整 api 使用和 demo 文件请参考 index.js
vue 和 react 用法能够参考此例子,若是有必要也能够此版本库的例子
在使用这个库以前,先介绍库中的一些概念。
constXLSX = require('xlsx'); let html = XLSX.utils.sheet_to_html(workbook.Sheets.Sheet1)
生成 html 的用法,而且不会有任何样式
由于 exceljs 读取文件不支持 sync 同步读取,给的实例也是 await 例子.致使我读取完遇到一个问题,就是总是生成不成功,最后发现必需要把全部逻辑所有放入函数中,像下方这样
(async function (params) { let res = await workbook.xlsx.readFile(`${__dirname}/赵六.xlsx`); //执行全部数据处理逻辑 //执行写的逻辑 workbook.xlsx.writeFile(path.resolve(__dirname, '../webpack/test222.xlsx')); });
全部逻辑所有要写入这个函数中,这样原本是能够的,可是出错调试概率较大,而且读取到的数据庞大还须要额外处理,因此我读取数据逻辑就用的 node-xlsx,十分简单方便,若是你用的 exceljs 读取文件数据出现问题,大几率是异步同步逻辑搞错了,多加注意便可
列宽不知道是以什么为单位,反正不是像素(已测量),例子中是以厘米为单位再乘以 4.7 的结果设置的,4.7 是不断测试的结果.
快捷查看列宽的方法,打开 wps 表格,长按列与列字母间的竖线,就能看到列宽,取厘米的单位便可.见下图
前景色设置必须右键单元格选择设置单元格格式,而后选择图案样式选择颜色,就能够前景色填充
worksheet.getCell('A2').fill = { type: 'pattern', pattern:'darkTrellis', fgColor:{argb:'FFFFFF00'}, bgColor:{argb:'FF0000FF'} };
worksheet.getCell('A2').fill = { type: "pattern", pattern: "solid", fgColor: { argb: next.bgColor }, }
解决 Mac 下编辑 Microsoft Office Word 文档与 Windows 排版不一致的问题,,不一样的系统用 wps 打开相同的表格,打印预览的时候,表格宽度显示不同
个人解决办法就是 mac 下显示正常,按 mac 下的宽度来设置就能够了
~
创做不易,若是对你有帮助,请给个星星 star✨✨ 谢谢,地址https://github.com/lingxiaoyi/excel~