工作中我们可能会遇到制作表格的需求,那么针对nodejs如何制作一个汇总表格呢?
今天我们就在此介绍下exceljs的基本使用,应该可以满足我们大部分的需求。

第一部分 下载

  1. npm install exceljs

第二部分 基本的配置

  1. var Excel = require("exceljs");
  2.  
  3. var workbook = new Excel.Workbook();
  4.  
  5. // 基本的创建信息
  6. workbook.creator = "Me";
  7. workbook.lastModifiedBy = "Her";
  8. workbook.created = new Date(1985, 8, 30);
  9. workbook.modified = new Date();
  10. workbook.lastPrinted = new Date(2016, 9, 27);
  11.  
  12. // 视图大小, 打开Excel时,整个框的位置,大小
  13. workbook.views = [
  14. {
  15. x: 0,
  16. y: 0,
  17. width: 1000,
  18. height: 2000,
  19. firstSheet: 0,
  20. activeTab: 1,
  21. visibility: "visible"
  22. }
  23. ];
  24.  
  25. // 标签创建
  26. var worksheet = workbook.addWorksheet("第一个标签");
  27. // 带颜色的
  28. var worksheet2 = workbook.addWorksheet("第二个标签", { properties: { tabColor: { argb: "FFC0000" } } });
  29.  
  30. // 遍历标签
  31. workbook.eachSheet((worksheet, sheetId) => {
  32. console.log("标签ID:", sheetId)
  33. })
  34. // console.log(worksheet);
  35. // 删除一个标签
  36. workbook.removeWorksheet(2)
  37.  
  38. var firstSheet = workbook.getWorksheet(1);
  39. console.log("标签信息-id", firstSheet.id);
  40. console.log("获取总的:行/实际行 /列/实际列 个数: ", firstSheet.rowCount, firstSheet.actualColumnCount, firstSheet.columnCount, firstSheet.actualColumnCount);
  41.  
  42. // 添加那个筛选箭头
  43. worksheet.autoFilter = 'A1:C1';
  44.  
  45. worksheet.getRow(5).font = { size: 14, bold: true };
  46.  
  47. worksheet.getCell("A2").value = "Site";
  48. worksheet.getCell("A2").font = {
  49. name: "Arial Black",
  50. color: { argb: "FF00FF00" },
  51. family: 2,
  52. size: 14,
  53. italic: true,
  54. bold: true
  55. };
  56.  
  57. // save workbook to disk
  58. workbook.xlsx.writeFile("first.xlsx").then(function() {
  59. console.log("saved");
  60. });

第三部分 行列的操作

看代码看注释

  1. var Excel = require("exceljs");
  2.  
  3. var workbook = new Excel.Workbook();
  4.  
  5. // 标签创建
  6. var worksheet = workbook.addWorksheet("第一个标签");
  7. // 带颜色的
  8. var worksheet2 = workbook.addWorksheet("第二个标签", {
  9. properties: {
  10. tabColor: {
  11. argb: "FFC0000"
  12. }
  13. }
  14. });
  15. // 设置列
  16. worksheet.columns = [{
  17. header: 'Rating Period',
  18. key: 'id',
  19. width: 38
  20. },
  21. {
  22. header: 'Name',
  23. key: 'name',
  24. width: 32,
  25. },
  26. {
  27. header: 'D.O.B.',
  28. key: 'DOB',
  29. width: 10,
  30. style: {
  31. numFmt: 'dd/mm/yyyy'
  32. }
  33. }
  34. ];
  35.  
  36. /// 根据ID添加值
  37. worksheet.addRow({
  38. id: 1,
  39. name: 'John Doe',
  40. dob: new Date(1970, 1, 1)
  41. });
  42. worksheet.addRow({
  43. id: 2,
  44. name: 'Jane Doe',
  45. dob: new Date(1965, 1, 7)
  46. });
  47.  
  48. worksheet.getCell(1).value = "Z";
  49.  
  50. // 直接赋值
  51. worksheet.getCell('A6').value = "1989";
  52.  
  53. // 合并单元格
  54. worksheet.mergeCells('A4:A7');
  55. // 合并四个格子
  56. worksheet.mergeCells('A10', 'B11');
  57.  
  58. // ===== 格式化显示,
  59. // 数字 1.6 显示 '1 3/5'
  60. worksheet.getCell('A1').value = 1.6;
  61. worksheet.getCell('A1').numFmt = '# ?/?';
  62. // 显示 1.60%
  63. worksheet.getCell('B1').value = 0.016;
  64. worksheet.getCell('B1').numFmt = '0.00%';
  65. // ===== 字体显示
  66. worksheet.getCell('A3').font = {
  67. // 字体名
  68. name: 'Comic Sans MS',
  69. // Font family for fallback. An integer value.
  70. family: 4,
  71. // 字体大小
  72. size: 16,
  73. // 下划线
  74. underline: true,
  75. // 加粗
  76. bold: true,
  77. };
  78. worksheet.getCell('A3').value = "测试字体"
  79.  
  80. // ==== 对齐方式
  81. worksheet.getCell('A1').alignment = {
  82. vertical: 'top',
  83. horizontal: 'left'
  84. };
  85. worksheet.getCell('B1').alignment = {
  86. vertical: 'middle',
  87. horizontal: 'center'
  88. };
  89. worksheet.getCell('C1').alignment = {
  90. vertical: 'bottom',
  91. horizontal: 'right'
  92. };
  93.  
  94. // ===== 边框
  95. worksheet.getCell('A1').border = {
  96. top: {
  97. style: 'double',
  98. color: {
  99. argb: 'FF00FF00'
  100. }
  101. },
  102. left: {
  103. style: 'double'
  104. },
  105. bottom: {
  106. style: 'thin'
  107. },
  108. right: {
  109. style: 'thin'
  110. }
  111. };
  112.  
  113. // ==== 填充颜色
  114. worksheet.getCell('A1').fill = {
  115. // 模式
  116. type: 'pattern',
  117. // 填充
  118. pattern: 'solid',
  119. // fgColor: {
  120. // argb: 'FFFF0000'
  121. // },
  122. // 背景色
  123. bgColor: {
  124. argb: 'FF0000FF'
  125. }
  126. };
  127. // 图片相关操作直接看GitHub就好
  128.  
  129. // 直接创建一个Excel表
  130. workbook.xlsx.writeFile("second.xlsx").then(function () {
  131. console.log("saved");
  132. });
  1.  

作者:simuty
链接:https://www.jianshu.com/p/ebfcef81e5e7

Nodejs技巧之---Exceljs的更多相关文章

  1. NodeJS技巧

    1. 获取程序执行时间 // 打印程序执行时间 console.time() // some functions console.timeEnd() 2. 将函数异步化 setTimeout(() = ...

  2. 学习老外用webstorm开发nodejs的技巧--代码提示DefinitelyTyped

    最近入了nodejs的坑,作为老码农,js对我来说还是很容易的.webstorm虽说用得不多,但是pycharms我是老手了,idea的东西一脉相承,想想也就那样了. 但是自从看了某个视频后,觉得毕竟 ...

  3. webstorm开发nodejs的技巧--代码提示DefinitelyTyped

    先发视频“WebStorm - MEAN Stack Walkthrough and Tips”,地址:http://www.tudou.com/programs/view/txhBUA7fcNA/? ...

  4. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  5. nodejs进阶(1)——npm使用技巧和最佳实践

    nodejs进阶教程,小白绕道!!! npm使用技巧和最佳实践 前提:请确保安装了node.js npm的最佳实践 npm install是最常见的npm cli命令,但是它还有更多能力!接下来你会了 ...

  6. Excel文件导入导出(基于Nodejs、exceljs)

    Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...

  7. nodejs 环境配置技巧

    环境:Mac OSX 10.10.3 NodeJS:v0.12.2 NodeJs 安装指需要 1.执行 npm install xxxx -g 时 需要执行 sudo npm install xxxx ...

  8. 小记NodeJS两项小技巧(与HTTP相关)

    1,兼容HTTP1.1和HTTP1.0 区别在content-length,1.0接受定长,不接受变长,导致transfer-encodeing的chunked模式无法识别,最终导致无法识别BODY. ...

  9. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大 ...

随机推荐

  1. vue + element ui开发过程中需要注意的几个点

    1.实现动态的数据双向绑定 关键字[$set]在这个需求开发的过程中还遇到深度克隆的问题 2:form表单的动态字段验证 关键字[promise.all] 3:动态表单验证关键字[el-form-it ...

  2. 使用终端批量下载 B 站视频

    需要使用一个叫做 you-get 的命令行程序 可以通过 Homebrew 安装(macOS), 安装命令为 brew install you-get, 其他平台的安装可参考 Github 主页: s ...

  3. Flask之threading.loacl方法

    一.threading.loacl方法 import threading import time class Foo: pass foo = Foo() def func(num): foo.num ...

  4. cpio命令

    RPM包中文件提取 cpio命令主要有三种基本模式:"-o"模式指的是copy-out模式,就是把数据备份到文件库中:"-i"模式指的是copy-in模式,就是 ...

  5. 华为云PaaS首席科学家:Cloud Native +AI,企业数字化转型的最佳拍档

    近日,在2019华为全球分析师大会期间,华为云PaaS首席科学家熊英博士在+智能,见未来(华为云&大数据)的分论坛上,从云计算行业发展谈起,深入云原生发展趋势,对华为云智能应用平台做了深度解读 ...

  6. HTTP和HTTPS的区别和常见的面试题

    本篇会着重介绍http和https的区别和常见的面试题 常见的http和https面试题: Http与Https的基本概念和他们的区别 HTTPS工作原理 常用的HTTP方法有哪些 GET方法与POS ...

  7. Oracle的instr()函数和substr()函数

    INSTR()函数 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceString ...

  8. WSGI原理

    web_server: import socket import time import multiprocessing import re import mini_frame class WSGIS ...

  9.  Django REST framework解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  10. CSS3中的display:grid网格布局介绍

    1.网格布局(grid): 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局; 2.基本概念: 容器和项目,如图所示: <div class="content&qu ...