1.首先,需要下载一个叫better-xlsx,的插件,以yarn 为例 ' yarn add better-xlsx --save '下载相关依赖包( npm 方式 ' npm i better-xlsx --save ')
新建一个html文件,引入如下文件

2.在页面定义一个按钮,用于点击导出数据,书写导出代码

3.首先需要创建一个excel文件
let file = new xlsx.File()

//创建一个sheet,如果有子表,还可以同样的方式创建子表

let sheet = file.addSheet('sheet1');

创建行,创建单元格 ,给单元格赋值 let row = sheet.addRow()  let cell = row.addCell()

前端导出Excel完整代码:

$(function () {
$('#btn').click(function () {
//首先创建一个xlsx文件
let file = new xlsx.File()
//创建一个sheet
let sheet = file.addSheet('sheet1');
let data = [
['Auto', 200, 90, 'B2-C2'],
['Entertainment', 200, 32, 'B3-C3'],
['Food', 350, 205.75, 'B4-C4'],
['Home', 300, 250, 'B5-C5'],
['Medical', 100, 35, 'B6-C6'],
['Personal Items', 300, 80, 'B7-C7'],
['Travel', 500, 350, 'B8-C8'],
['Utilities', 200, 100, 'B9-C9'],
['Other', 50, 60, 'B10-C10']
];
//创建sheet的头部行
let header = sheet.addRow();
//设置行高
header.setHeightCM(0.8);
let headers = ['张三', '李四', '王五', '张柳']
headers.forEach(item => {
//创建头部行中的单元格
let hc = header.addCell();
//给每个单元格设置值
hc.value = item;
//设置文本在单元格内水平垂直居中
hc.style.align.h = 'center';
hc.style.align.v = 'center';
//设置字体颜色
hc.style.font.color = 'ffffffff';
//给每个单元格设置边框和填充颜色
border(hc, 0, 0, 1, 0)
fillColor(hc, 1)
})

data.forEach((item, index) => {
//根据数据,创建对应个数的行
let row = sheet.addRow();
row.setHeightCM(0.8);
//创建对应个数的单元格.并填充值
//col1
let cell1 = row.addCell();
cell1.value = item[0]
cell1.style.align.v = 'center';
cell1.style.align.h = 'center';
if (index === 0) {
border(cell1, 1, 1, 0, 0)
} else {
border(cell1, 0, 0, 0, 1)
}
fillColor(cell1, 2)
//col2
let cell2 = row.addCell();
cell2.value = item[1]
cell2.numFmt = '$#,##0.00';
cell2.cellType = 'TypeNumeric';
cell2.style.align.v = 'center';
cell2.style.align.h = 'center';
if (index === 0) {
border(cell2, 1, 1, 0, 0)
} else {
border(cell2, 0, 0, 0, 1)
}
fillColor(cell2, 3)
//col3
let cell3 = row.addCell();
cell3.value = item[2]
cell3.numFmt = '$#,##0.00';
cell3.cellType = 'TypeNumeric';
cell3.style.align.v = 'center';
cell3.style.align.h = 'center';
if (index === 0) {
border(cell3, 1, 1, 0, 0)
} else {
border(cell3, 0, 0, 0, 1)
}
fillColor(cell3, 4)
//col4
let cell4 = row.addCell();
cell4.formula = item[3]
cell4.numFmt = '$#,##0.00';
cell4.cellType = 'TypeFormula';
cell4.style.align.v = 'center';
cell4.style.align.h = 'center';
if (index === 0) {
border(cell4, 1, 1, 0, 0)
} else {
border(cell4, 0, 0, 0, 1)
}
fillColor(cell4, 4)
})
for (var i = 0; i < 4; i++) {
//设置每列的宽度
sheet.col(i).width = 20;
}
file.saveAs('blob').then(function (content) {
saveAs(content, "example.xlsx");
});
})

//给单元格填充边框
function border(cell, top, right, bottom, left) {
const light = 'ffded9d4';
const dark = 'ff7e6a54';
cell.style.border.top = 'thin';
cell.style.border.topColor = top ? dark : light;
cell.style.border.left = 'thin';
cell.style.border.leftColor = left ? dark : light;
cell.style.border.bottom = 'thin';
cell.style.border.bottomColor = bottom ? dark : light;
cell.style.border.right = 'thin';
cell.style.border.rightColor = right ? dark : light;
// console.log(hc.style.border.topColor=0?2:3) 3
// console.log(hc.style.border.leftColor=0?2:3) 3
// console.log(hc.style.border.bottomColor=0?2:3)3
// console.log(hc.style.border.rightColor=1?2:3) 2
//也就是说给单元格设置边框颜色时,如果给边框赋值为0,则表示不给该边框赋值,转换为布尔值为false,反之则相反
}
//给单元格填充背景,前景色
function fillColor(cell, type) {
type = type || 0;
let colors = ['ffffffff', 'ffa2917d', 'ffe4e2de', 'fffff8df', 'fff1eeec']
// 0: white ,1: header, 2: first col, 3: second col, 4: gray,
cell.style.fill.patternType = 'solid';
cell.style.fill.fgColor = colors[type];
cell.style.fill.bgColor = 'ffffffff';
}

})

前端导出Excel的更多相关文章

  1. 前端导出Excel兼容写法

    今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...

  2. 前端导出excel表

    前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...

  3. js前端导出excel

    此例子是利用html特性,纯前端导出excel,样式不好看,兼容主流浏览器. var tableid = jQuery(this).closest("div.tab-label-wrap&q ...

  4. 踹掉后端,前端导出Excel!

    前言 导出Excel文件这个功能,通常都是在后端实现返回前端一个下载链接,但有时候我们只想导出前端页面上已经有了的数据,不想再调后端导出接口浪费服务器资源,学习本文demo例子,我们踹掉后端,直接在前 ...

  5. 前端导出excel数据-jsonToExcel

    咳咳,好久没有写博了... 在工作中遇到了纯前端,将数据导出为excel文件.正文开始: 第一步 安装依赖: npm i xlsx 第二步 写导出函数: import XLSX from 'xlsx' ...

  6. vue项目,前端导出excel

    今天研究一下前端如何导出excel,边查边实践,边记录 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还涉及不少二进制的东西 file-saver:ES5新增了相关 ...

  7. vue 纯前端导出 excel 表格

    在开发后台管理系统的时候,很多地方都要用到导出excel 表格,比如将table中的数据导出到本地,那么实现这种需求往往有两种方案: 一.后端开发一个下载链接,前端将这个链接放到 a 标签的 href ...

  8. js前端导出excel:json形式的导出

    第一中形式的导出:主要是表头对应主体数据,json形式的导出 js库文件名称 : table2excel.js这个js库文件是网上找的,并且自己根据自己业务需求把内容改了一下复制到 table2exc ...

  9. Vue实现在前端导出Excel 方法2

    也可以去看下我的方法1:https://www.cnblogs.com/yingyigongzi/p/10915382.html ----------------------------------- ...

随机推荐

  1. js 科学计数法

    function convertNum(num_str){ //参数必须为 字符串 //科学计数法字符 转换 为数字字符, 突破正数21位和负数7位的Number自动转换 // 兼容 小数点左边有多位 ...

  2. EFM32JG系列MCU内部温度传感器使用方法

    在很多电子类应用场合中,我们经常需要采集产品工作的周围环境温度,一般采取的方式有两种: 1)外加温度传感器 2)采用MCU内部温度传感器 外加温度传感器会增加产品的成本以及布板空间,所以在很多场合,我 ...

  3. 程序包com.sun.istack.internal不存在

    添加一下依赖 <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency> ...

  4. session/token/cookie/socket区别

    Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象 ...

  5. 关于camera 构架设计的一点看法

    camera的构架目前来看有两种,一种是集中式管理,比如说建立一个引擎,引擎向上提供接口,向下管理所有模块.把camera的所有功能划分为不同的模块,又引擎统一管理.模块的结构就比较随意了,可以统一接 ...

  6. Spring_自动装配

    Beans-autowire.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=& ...

  7. 最简单的CI框架入门示例--数据库取数据

    前提: 安装好MySQL,Apache,PHP. 1.下载CI框架 下载地址  http://www.codeigniter.com/ 2.配置 database.php配置:    为数据库服务器设 ...

  8. EF Code-First 学习之旅 配置一对一的关系

    1对1.1对0 的关系 例如:Entity1与零个或一个Entity2的实例有关系 public class Student { public Student() { } public int Stu ...

  9. postgre数据库插入错误:prepared statement “S_1”already exist, 解决办法

    在使用kettle工具(数据迁移软件)在postgre数据库中插入记录时,出现如下错误,解决办法: 在/etc/pgsql/pgbouncer.ini中修改配置,设置 server_reset_que ...

  10. 论Spark高手是怎样炼成的

    SPARK J大数据的处理怎么能变快一点,答案是请用spark,因为它是基于内存的,可以有效减少数据的落地次数.Spark性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计 ...