Nodejs实用技巧之-Exceljs

程序员修炼之路 2018-05-30 16:38:46 ⋅ 823 阅读

能用一篇文章写清楚的,就不搞第二篇, 不来虚的

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

第一部分 下载

 
  1. npm install exceljs

第二部分 基本的配置

 
  1. var Excel = require("exceljs");

  2. var workbook = new Excel.Workbook();

  3. // 基本的创建信息

  4. workbook.creator = "Me";

  5. workbook.lastModifiedBy = "Her";

  6. workbook.created = new Date(1985, 8, 30);

  7. workbook.modified = new Date();

  8. workbook.lastPrinted = new Date(2016, 9, 27);

  9. // 视图大小, 打开Excel时,整个框的位置,大小

  10. workbook.views = [

  11.    {

  12.        x: 0,

  13.        y: 0,

  14.        width: 1000,

  15.        height: 2000,

  16.        firstSheet: 0,

  17.        activeTab: 1,

  18.        visibility: "visible"

  19.    }

  20. ];

  21. // 标签创建

  22. var worksheet = workbook.addWorksheet("第一个标签");

  23.  // 带颜色的

  24. var worksheet2 = workbook.addWorksheet("第二个标签", { properties: { tabColor: { argb: "FFC0000" } } });

  25. // 遍历标签

  26. workbook.eachSheet((worksheet, sheetId) => {

  27.    console.log("标签ID:", sheetId)

  28. })

  29. // console.log(worksheet);

  30. // 删除一个标签

  31. workbook.removeWorksheet(2)

  32. var firstSheet = workbook.getWorksheet(1);

  33. console.log("标签信息-id", firstSheet.id);

  34. console.log("获取总的:行/实际行 /列/实际列 个数: ", firstSheet.rowCount, firstSheet.actualColumnCount, firstSheet.columnCount, firstSheet.actualColumnCount);

  35. // 添加那个筛选箭头

  36. worksheet.autoFilter = 'A1:C1';

  37. worksheet.getRow(5).font = { size: 14, bold: true };

  38. worksheet.getCell("A2").value = "Site";

  39. worksheet.getCell("A2").font = {

  40.    name: "Arial Black",

  41.    color: { argb: "FF00FF00" },

  42.    family: 2,

  43.    size: 14,

  44.    italic: true,

  45.    bold: true

  46. };

  47. // save workbook to disk

  48. workbook.xlsx.writeFile("first.xlsx").then(function() {

  49.    console.log("saved");

  50. });

第三部分 行列的操作

看代码看注释

 
  1. var Excel = require("exceljs");

  2. var workbook = new Excel.Workbook();

  3. // 标签创建

  4. var worksheet = workbook.addWorksheet("第一个标签");

  5. // 带颜色的

  6. var worksheet2 = workbook.addWorksheet("第二个标签", {

  7.    properties: {

  8.        tabColor: {

  9.            argb: "FFC0000"

  10.        }

  11.    }

  12. });

  13. // 设置列

  14. worksheet.columns = [{

  15.        header: 'Rating Period',

  16.        key: 'id',

  17.        width: 38

  18.    },

  19.    {

  20.        header: 'Name',

  21.        key: 'name',

  22.        width: 32,

  23.    },

  24.    {

  25.        header: 'D.O.B.',

  26.        key: 'DOB',

  27.        width: 10,

  28.        style: {

  29.            numFmt: 'dd/mm/yyyy'

  30.        }

  31.    }

  32. ];

  33. /// 根据ID添加值

  34. worksheet.addRow({

  35.    id: 1,

  36.    name: 'John Doe',

  37.    dob: new Date(1970, 1, 1)

  38. });

  39. worksheet.addRow({

  40.    id: 2,

  41.    name: 'Jane Doe',

  42.    dob: new Date(1965, 1, 7)

  43. });

  44. worksheet.getCell(1).value = "Z";

  45. // 直接赋值

  46. worksheet.getCell('A6').value = "1989";

  47. // 合并单元格

  48. worksheet.mergeCells('A4:A7');

  49. // 合并四个格子

  50. worksheet.mergeCells('A10', 'B11');

  51. // ===== 格式化显示,

  52. // 数字 1.6 显示 '1 3/5'

  53. worksheet.getCell('A1').value = 1.6;

  54. worksheet.getCell('A1').numFmt = '# ?/?';

  55. // 显示 1.60%

  56. worksheet.getCell('B1').value = 0.016;

  57. worksheet.getCell('B1').numFmt = '0.00%';

  58. // ===== 字体显示

  59. worksheet.getCell('A3').font = {

  60.    // 字体名

  61.    name: 'Comic Sans MS',

  62.    // Font family for fallback. An integer value.

  63.    family: 4,

  64.    // 字体大小

  65.    size: 16,

  66.    // 下划线

  67.    underline: true,

  68.    // 加粗

  69.    bold: true,

  70. };

  71. worksheet.getCell('A3').value = "测试字体"

  72. // ==== 对齐方式

  73. worksheet.getCell('A1').alignment = {

  74.    vertical: 'top',

  75.    horizontal: 'left'

  76. };

  77. worksheet.getCell('B1').alignment = {

  78.    vertical: 'middle',

  79.    horizontal: 'center'

  80. };

  81. worksheet.getCell('C1').alignment = {

  82.    vertical: 'bottom',

  83.    horizontal: 'right'

  84. };

  85. // ===== 边框

  86. worksheet.getCell('A1').border = {

  87.    top: {

  88.        style: 'double',

  89.        color: {

  90.            argb: 'FF00FF00'

  91.        }

  92.    },

  93.    left: {

  94.        style: 'double'

  95.    },

  96.    bottom: {

  97.        style: 'thin'

  98.    },

  99.    right: {

  100.        style: 'thin'

  101.    }

  102. };

  103. // ==== 填充颜色

  104. worksheet.getCell('A1').fill = {

  105.    // 模式

  106.    type: 'pattern',

  107.    // 填充

  108.    pattern: 'solid',

  109.    // fgColor: {

  110.    //     argb: 'FFFF0000'

  111.    // },

  112.    // 背景色

  113.    bgColor: {

  114.        argb: 'FF0000FF'

  115.    }

  116. };

  117. // 图片相关操作直接看GitHub就好

  118. // 直接创建一个Excel表

  119. workbook.xlsx.writeFile("second.xlsx").then(function () {

  120.    console.log("saved");

  121. });

会者不难,相信这一篇就够了,至于更加高逼格的,那就不仅是api了,可能得补补office二级

关注我们


全部评论: 0

    我有话说:

    Node模块Events模块(五)

    Node模块Events模块(五)

    2018年8个技巧来构建更好的Node.js应用程序

    2018年8个技巧来构建更好的Node.js应用程序

    Node 模块 util URL queryString path(八)

    第一部分 util util是一个Node.js核心模块,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串、对象的序列化、实现对象继承等常用方法。要使用util

    Node模块fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供一组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    NodeJS 10.5.0 中的线程:实用介绍

    几天前,Node.js版本10.5.0发布,其中包含的主要功能之一是添加了线程支持。

    Node实战篇:Express--jade模板引擎(七)

    Jade(Pug) — Node Template Engine,一个高性能的模板引擎,专为 Node 而做......

    Node实战篇:Express-session解析(八)

    Session和HTTP协议属于不同层面的事物,HTTP属于ISO七层模型的最高层应用层,前者Session不属于后者,前者HTTP是具体的动态页面技术实现的,但同时它又是基于后者的。

    Node实战篇:Express路由(三)

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    Nodejs神兽--Promise

    言必信,行必果。 没毛病,这就是Promise!

    Nodejs视频服务器 切片ffmpeg

    Node 视频服务器 切片ffmpeg

    Node实战篇:Nodejs 链接 Mariadb 实例

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL

    Nodejs 接入 公众号【逗比版】

    Nodejs 接入 公众号 需求:Boss: 我们要接入公众号,你看下文档对接下。Me: 🆗 然后,可能因为对腾讯的反感,加之网上对腾讯的吐槽,怀着愤世嫉俗的态度胡乱的找资源,看方案

    Node异步式I/O和异步式编程(三)

     Node.js 最大的特点就是异步式 I/O(或者非阻塞I/O)与事件紧密结合的编程模式。 第一部分: I/O 1.阻塞I/O与非阻塞I/O概念 1.1阻塞I/O(同步I/O) 线程在

    Nodejs 链接 Mariadb 实例

    是时候关联数据库了

    为什么要使用 Node.js?这几点你必须知道!

    经过这几年的发展,前端普遍进入了技术深水区,只会Web页面开发已经难以满足企业的需求,Node逐渐成为了刚性技能。 但Node在业务上的使用还没有那么普及,有的时候想用老板还不同意,本文将从4个角度

    使用 NodeJS 实现一个简单区块链

    每天我们都会听说发现新的数字货币的消息,或者有人说它们是一个很快就会爆炸的大泡沫,其中只有区块链会留下。

    Node实战篇:阶段项目(九)

    项目整体预览 项目的github地址 界面逼格还行-_- 主要功能: 登陆; 退出; 所用的主要模块: express, 路由.静态文件.模块分工等; express-session, 采用session的方式解决http无状态; bod...

    Node实战篇:Express 中间件 cookie-parser(六)

    cookieParser()实际上是对http传入的cookie进行解析后赋值给req.cookies,使得中间件可用