vue2 +elmentui+xlsx10.0.0+xlsx-style
坑有点多。
xlsx10.0.0以后的版本 用require导入或者使用什么导入什么,不要import * xlsx全部导入 ,不然jszip组件报错找不到。
配置文件:
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
configureWebpack: {resolve:{
fallback: {
fs: false,
}, },
externals:{
'./cptable': 'var cptable'
},
}
})
改xlsx-style源码:
参考
js代码:
<script>
// @ is an alias to /src
import { utils } from 'xlsx';
import XLSXS from "xlsx-style";
import FileSaver from "file-saver";
export default
{
name: 'HomeView',
data()
{
return {
tableList: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
id: 0,
},
{
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄',
id: 1,
},
{
date: '2017-05-01',
name: '王小虎',
id: 2,
address: '上海市普陀区金沙江路 1511111 弄'
},
{
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄',
id: 3
}, ]
}
},
methods:
{
s2ab(s)
{
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}, print()
{ let wb = utils.table_to_book(document.querySelector("#table1"), { sheet: "分组表" }); this.setExlStyle(wb["Sheets"]["分组表"]);
this.setbgColor(wb["Sheets"]["分组表"]);
console.log(wb);
var ws = XLSXS.write(wb,
{
type: "binary",//node.js6以上,写buffer会报nodeBuffer不支持
});
try
{
FileSaver.saveAs(
new Blob([this.s2ab(ws)], { type: "application/octet-stream" }),
'5.xlsx'
);
}
catch (e)
{
if (typeof console !== "undefined")
console.log(e, ws);
}
return ws;
},
setExlStyle(data)
{
let borderAll = {
//单元格外侧框线
top:
{
style: "thin",
},
bottom:
{
style: "thin",
},
left:
{
style: "thin",
},
right:
{
style: "thin",
},
};
data["!cols"] = [];
for (let key in data)
{
if (data[key] instanceof Object)
{
data[key].s = {
border: borderAll,
alignment:
{
horizontal: "center", //水平居中对齐
vertical: "center",
},
font:
{
sz: 11,
},
bold: true,
numFmt: 0, }; data["!cols"].push({ wpx: 115 });
}
}
return data;
},
//根据条件改变背景
setbgColor(ws)
{ let borderAll = {
//单元格外侧框线
top:
{
style: "thin",
},
bottom:
{
style: "thin",
},
left:
{
style: "thin",
},
right:
{
style: "thin",
},
};
let arr = ["A", "B", "C", "D"];
for (let i = 1; i <= this.tableList.length; i++)
{
for (let key in arr)
{
var key1 = 'A' + i;
var key2 = arr[key] + i; var val = ws[key1];
if (val.v % 2 == 0)
{
ws[key2].s = {
border: borderAll,
alignment:
{
horizontal: "center", //水平居中对齐
vertical: "center",
}, bold: true,
numFmt: 0,
font:
{
name: 'Arial',
sz: 10,
bold: true,
color: { rgb: "FFFFFFFF" }
},
fill:
{
//背景色
bgColor: { rgb: "FF59AB44" },
fgColor: { rgb: "FF59AB44" },
},
}
}
}
}
return ws;
}
}

工程:vue2export.zip

vue2前端导出带背景色表格 xlsx xlsx-style的更多相关文章

  1. xlsx纯前端导出表格,完善边框等样式

    仅用xlsx是无法实现文字样式及表格边框的style的,因此配合使用xlsx-style 以下源码直接复制过去用 // 源码什么的都不需要改动 import * as XLSXStyle from ' ...

  2. Java导出带格式的Excel数据到Word表格

    前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...

  3. 如何通过Java导出带格式的 Excel 数据到 Word 表格

    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...

  4. 用NPOI实现导入导出csv、xls、xlsx数据功能

    用NPOI实现导入导出csv.xls.xlsx数据功能   直接上代码 首先定义一个接口   如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...

  5. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

  6. vue2.0 导出Excel表格数据

    1.安装三个依赖包 npm install -S file-saver npm install -S xlsx npm install -D script-loader 2.在项目中创建一个文件夹(比 ...

  7. 前端导出excel表格

    前言近期项目有个新需求--将折线图表的数据加一个下载成excel表格的功能.以前下载功能都是调后台接口的,但是这个迭代,后台压力比较重,部分就交给了前端自己实现,下面就记录一下前端如何实现excel表 ...

  8. C# 将DataGridView中显示的数据导出到Excel(.xls和.xlsx格式)—NPOI

    前言 https://blog.csdn.net/IT_xiao_guang_guang/article/details/104217491  本地数据库表中有46785条数据,测试正常  初次运行程 ...

  9. 导出带图片的Excel——OOXML文件分析

    需求: 普通js导出文件excel具有兼容性问题,通过js-xsl导出文件API未找到导出图片的方案,实例过少,因此针对07年后以.xlsx后缀的excel文件,通过修改后缀.zip参考文件模板来实现 ...

  10. vue项目,前端导出excel

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

随机推荐

  1. Qt 5.12.10 国际化

    网上有资料但是不全,所以这里记录一份比较全的 1.创建项目 2.编辑 demo.cpp 这里写button用来做国际化示例,运行软件后是这个样子 #include "demo.h" ...

  2. jemter做参数化的几种方法

    第一种:使用用户参数:添加--前置处理器--用户参数

  3. openGauss数据库xlog目录满问题处理

    openGauss 数据库 xlog 目录满问题处理 openGauss 数据库 xlog 满通常为以下几个原因: 1.主备状态不正常,存在网络问题,集群内有宕机的节点 2.xlog 保留数量过多 3 ...

  4. MogDB/openGauss 自定义snmptrapd告警信息

    MogDB/openGauss 自定义 snmptrapd 告警信息 在实际使用中,默认的报警规则信息并不能很好的满足 snmp 服务端的需求,需要定制化报警信息,这里以添加 ip 为例,看似一个简单 ...

  5. JavaScript中的变量提升本质

    JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们.就好像是变量声明和函数声明被提升了代码的顶部一样. sayHi() // Hi there! function sayHi() { ...

  6. CPU性能实战分析

    1.从平均负载谈起 我们每次发现线上系统变慢时,第一件事往往都会使用top或者uptime命令查看cpu的负载以及占用率,比如top命令会有下面的结果: top - 15:51:39 up 84 da ...

  7. 力扣451(java)-根据字符出现频率排序(中等)

    题目: 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 .一个字符出现的 频率 是它出现在字符串中的次数. 返回 已排序的字符串 .如果有多个答案,返回其中任何一个. 示例 1: 输入 ...

  8. 谈谈PolarDB-X在读写分离场景的实践

    简介: 针对写少读多的业务可以考虑通过添加数据库节点来使其达到提升性能的目的,但添加节点,往往涉及到数据的搬迁,扩容周期比较长,很难应对徒增的业务流量,这个时候可以考虑采用读写分离的方式,将读写流量做 ...

  9. 讲座回顾丨基于 OpenYurt 和 EdgeX 的云边端协同新可能

    简介: 为帮助参赛选手更好地了解并运用相关技术,本次大赛将在 7 月至 9 月持续开展 3 轮技术培训,涵盖初.中.高不同层级,帮助开发者系统学习智能边缘系统知识.我们邀请到来自英特尔.VMware. ...

  10. 使用Databricks进行零售业需求预测的应用实践

    ​简介:本文从零售业需求预测痛点.商店商品模型预测的实践演示,介绍Databricks如何助力零售商进行需求.库存预测,实现成本把控和营收增长. 作者:李锦桂 阿里云开源大数据平台开发工程师 本文从零 ...