暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nodejs实用技巧之-Exceljs

IT实战联盟 2018-05-30
991

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

工作中我们可能会遇到制作表格的需求,那么针对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二级

关注我们

文章转载自IT实战联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论