Nodejs技巧之

Stella981
• 阅读 584

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

第一部分 下载

npm install exceljs

第二部分 基本的配置

var Excel = require("exceljs");

var workbook = new Excel.Workbook();

// 基本的创建信息
workbook.creator = "Me";
workbook.lastModifiedBy = "Her";
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);

// 视图大小, 打开Excel时,整个框的位置,大小
workbook.views = [
    {
        x: 0,
        y: 0,
        width: 1000,
        height: 2000,
        firstSheet: 0,
        activeTab: 1,
        visibility: "visible"
    }
];

// 标签创建
var worksheet = workbook.addWorksheet("第一个标签");
  // 带颜色的
var worksheet2 = workbook.addWorksheet("第二个标签", { properties: { tabColor: { argb: "FFC0000" } } });

// 遍历标签
workbook.eachSheet((worksheet, sheetId) => {
    console.log("标签ID:", sheetId)
})
// console.log(worksheet);
// 删除一个标签
workbook.removeWorksheet(2)

var firstSheet = workbook.getWorksheet(1);
console.log("标签信息-id", firstSheet.id);
console.log("获取总的:行/实际行 /列/实际列 个数: ", firstSheet.rowCount, firstSheet.actualColumnCount, firstSheet.columnCount, firstSheet.actualColumnCount);

// 添加那个筛选箭头
worksheet.autoFilter = 'A1:C1';

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

worksheet.getCell("A2").value = "Site";
worksheet.getCell("A2").font = {
    name: "Arial Black",
    color: { argb: "FF00FF00" },
    family: 2,
    size: 14,
    italic: true,
    bold: true
};

// save workbook to disk
workbook.xlsx.writeFile("first.xlsx").then(function() {
    console.log("saved");
});

第三部分 行列的操作

看代码看注释

var Excel = require("exceljs");

var workbook = new Excel.Workbook();

// 标签创建
var worksheet = workbook.addWorksheet("第一个标签");
// 带颜色的
var worksheet2 = workbook.addWorksheet("第二个标签", {
    properties: {
        tabColor: {
            argb: "FFC0000"
        }
    }
});
// 设置列
worksheet.columns = [{
        header: 'Rating Period',
        key: 'id',
        width: 38
    },
    {
        header: 'Name',
        key: 'name',
        width: 32,
    },
    {
        header: 'D.O.B.',
        key: 'DOB',
        width: 10,
        style: {
            numFmt: 'dd/mm/yyyy'
        }
    }
];

/// 根据ID添加值
worksheet.addRow({
    id: 1,
    name: 'John Doe',
    dob: new Date(1970, 1, 1)
});
worksheet.addRow({
    id: 2,
    name: 'Jane Doe',
    dob: new Date(1965, 1, 7)
});

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


// 直接赋值
worksheet.getCell('A6').value = "1989";

// 合并单元格
worksheet.mergeCells('A4:A7');
// 合并四个格子
worksheet.mergeCells('A10', 'B11');

// ===== 格式化显示,
// 数字 1.6 显示 '1 3/5'
worksheet.getCell('A1').value = 1.6;
worksheet.getCell('A1').numFmt = '# ?/?';
// 显示 1.60%
worksheet.getCell('B1').value = 0.016;
worksheet.getCell('B1').numFmt = '0.00%';
// ===== 字体显示
worksheet.getCell('A3').font = {
    // 字体名
    name: 'Comic Sans MS',
    // Font family for fallback. An integer value. 
    family: 4,
    // 字体大小
    size: 16,
    // 下划线
    underline: true,
    // 加粗
    bold: true,
};
worksheet.getCell('A3').value = "测试字体"

// ==== 对齐方式
worksheet.getCell('A1').alignment = {
    vertical: 'top',
    horizontal: 'left'
};
worksheet.getCell('B1').alignment = {
    vertical: 'middle',
    horizontal: 'center'
};
worksheet.getCell('C1').alignment = {
    vertical: 'bottom',
    horizontal: 'right'
};

// ===== 边框
worksheet.getCell('A1').border = {
    top: {
        style: 'double',
        color: {
            argb: 'FF00FF00'
        }
    },
    left: {
        style: 'double'
    },
    bottom: {
        style: 'thin'
    },
    right: {
        style: 'thin'
    }
};

// ==== 填充颜色
worksheet.getCell('A1').fill = {
    // 模式
    type: 'pattern',
    // 填充
    pattern: 'solid',
    // fgColor: {
    //     argb: 'FFFF0000'
    // },
    // 背景色
    bgColor: {
        argb: 'FF0000FF'
    }
};
// 图片相关操作直接看GitHub就好

// 直接创建一个Excel表
workbook.xlsx.writeFile("second.xlsx").then(function () {
    console.log("saved");
});

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

点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
sublime中调试js代码
首先安装nodejs(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fnodejs.org%2F)当然你可以使用其它诸如jsc(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Ftrac.webkit.org
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
3年前
NodeJs在Centos 6.5上部署
环境Centos6.51.安装NodeJs和npmsudo yum install nodejs npm enablerepoepel参考:查看(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fjoyent%2
Stella981 Stella981
3年前
SpreadJS 纯前端表格控件应用案例:Teammark知识管理库
由三节课研发的Teammark系统,基于SpreadJS二次开发实现,采用行业优秀的工作方法,以Excel模板作为基本的文档范例,满足了客户在线编辑Excel文档的刚性需求。下面,让我们一起来看看三节课是如何在“Teammark系统”中应用表格技术,实现多人实时协作与“表格文档协同编辑(https://www.oschina.net/action
Stella981 Stella981
3年前
Docker 安装 Request Tracker 工单系统
1、需求docker安装工单系统RequestTracker(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fbestpractical.com%2Frequesttracker),并需要支持LDAP登入。2、制作镜像1)request
可莉 可莉
3年前
20 行代码:Serverless 架构下用 Python 轻松搞定图像分类
「图像分类」是人工智能领域的一个热门话题,我们在实际生活中甚至业务的生产环境里,也经常遇到图像分类相似的需求,如何能快速搭建一个图像分类或者内容识别的API呢?我们考虑使用ServerlessFramework(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.c
Stella981 Stella981
3年前
Node.js学习路线图
Node.js学习路线图从零开始nodejs系列文章(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.fens.me%2Fseriesnodejs%2F),将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs
Stella981 Stella981
3年前
DataGear 制作按行滚动的轮播表格数据可视化看板
通过DataGear(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fdatagear.tech%2F)的表格图表轮播设置项(1.13.0版本新增),可以轻松制作按行滚动的轮播表格数据可视化看板。首先,新建表格所需的数据集,以如下CSV数据集为例:name,v
Wesley13 Wesley13
3年前
CSS定位概要
关于css定位,你需要知道的5件事近年来前端工程师已经可以通过不同的css布局技巧制作出很复杂的布局。其中有些技巧有很长的历史(比如:floats(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdrafts.csswg.org%2Fcssbox