最近遇到一个任务,需要自动生成表格。作为一个前端,想在node和浏览器中生成强大的表格,所以特地研究了很多关于表格的npm库。支持读写Excel的node.js模块node-xlsx:基于Node.js,解析excel文件数据,生成excel文件。仅支持xlsx格式的文件。js-xlsx:目前Github上star最多的处理Excel的库,支持解析XLSX/XLSM/XLSB/XLS/CSV多种格式的表格,解析使用纯js实现,写入需要依赖nodejs或者FileSaver.js生成并写入Excel,可生成子表Excel,功能强大,但上手难度稍大。没有提供Exceltableapiexamplecellwidth的基本设置,文档有点乱,不适合快速使用;普通版不支持定义字体、颜色、背景色等,需要此功能的可以使用专业版,需要联系客服收费,本人根据调试多次失败API设置。幸运的是,有一些关于样式设置问题的教程。我已经通过研究解决了它。可以设置宽度,颜色等,看根目录下我修改的xlsx.jsxlsx-style。样式不全,无法设置宽度。作者很多年前就没有维护过。我已经解决了宽度设置问题。请参阅修改后的xlsx-style.js文件exceljs。在使用这个库之前,我已经花费了很多精力。我用上面的库做了表格,但是发现不能设置页眉页脚,添加图片,打印选项设置等等,直到找到这个库。文档齐全,功能强大,而且免费。但是星星比较少,差点错过。本教程主要针对本库代码库地址https://github.com/lingxiaoyi/excel安装npminstallnpminstall-gnodemon进行调试,代替node命令,保存文件,node会自动重启执行.必须全局安装才能运行使用nodemonapp.jsjs-xlsx具体api使用方法请参考main.jsdemo,app.js中修改为require('./src/main.js');exceljs的具体api使用方法可以参考main-exceljs.jsdemo使用,修改app.js为require('./src/main-exceljs.js');因为每次生成表格,每次都需要打开表格查看样式。在windows电脑上,窗体打开后无法锁定生成了一个新文件。本来以为可以导出一个对应表格样式的html文件。在nodedebuggingvscode中,打开右侧的debuggingsettings,复制下面的代码,点击nodemon开始调试。{"type":"node","request":"launch","name":"nodemon","runtimeExecutable":"nodemon","program":"${workspaceFolder}/app.js","restart":true,"console":"integratedTerminal","internalConsoleOptions":"neverOpen","skipFiles":["/**"]},webpack目录的作用每次生成新的表单时,需要重新打开窗体才能查看样式,在windows电脑上,打开窗体后会被锁定,再次生成新窗体时会报错。文件被锁定,无法写入。对于想偷懒的我,能不能像webpack一样实现热更新功能,修改样式js页面自动更新呢??wps自带保存html文件的功能,但是没有提供生成的api,网上也找不到对应的转换函数。我以为我会实施它连续试用了一组表格转html的功能,无意中发现手机浏览器可以直接打开预览xlsx文件,欣喜若狂。使用方法是进入webpack目录安装依赖包。安装完成后,执行npmrundev。启动成功后会自动打开带有ip地址的预览地址,这时候电脑浏览器会自动下载xlsx文件,不用管它,直接用手机打开这个地址,就可以看到里面的内容了xlsx表单,每次修改内容和样式,都会自动刷新页面显示新的表单。Tips谷歌浏览器插件:生成二维码插件生成二维码方便手机扫码翻译一些看不懂的英文文档浏览器目录生成xlsx表格的方法浏览器进入浏览器目录安装依赖包。安装完成后,执行npmrundev。启动成功后,将根目录src下的李四窗体拖到页面的输入框中。表格生成成功后,会生成一个下载链接地址。右键点击标签页上的新建打开链接,会生成一个新的表格文件。完整的api使用和demo文件请参考index.jsvue和react使用。你可以参考这个例子。如果有必要,你也可以使用这个版本库来了解一些概念。在此之前,先介绍一下库中的一些概念。一个工作簿对象,它引用整个Excel文档。我们使用js-xlsx读取Excel文档后,会得到workbook对象。引用Excel文档中表格的工作表对象。我们知道一个Excel文档可以包含很多表格,每个表格对应一个worksheet对象。单元格对象是指工作表中的单元格,单元格就是一个单元格对象。xlsx上的注释使用constXLSX=require('xlsx');lethtml=XLSX.utils.sheet_to_html(workbook.Sheets.Sheet1)生成html用法,并不会出现styleexceljs使用注意读取文件问题,因为exceljs读取文件不支持sync同步读取,给出的例子是也是一个等待的例子。结果看了之后遇到了一个问题,就是一直生成不成功,最后发现所有的逻辑都要放到函数里面,像下面这样的(asyncfunction(params){letres=awaitworkbook.xlsx.readFile(`${__dirname}/ZhaoLiu.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和Windows下编辑MicrosoftOfficeWord文档排版不一致的问题,不同系统使用wps打开同一个表格,打印预览时,表格宽度显示不同。问题的详细地址。我的解决办法是mac下显示正常。你可以根据mac的宽度来设置。参考资料exceljsnode-xlsxjs-xlsx~制作不易,如果对你有帮助请给个star吧??谢谢,地址是https://github.com/lingxiaoyi/excel~