今天介绍ExcelJS的基本用法,主要介绍设置每列的宽度、合并、居中、标签等样式属性。代码如下:
<template>
<div class="wrap">
<div>
<el-button type="primary" @click="exportExcel">导出excel</el-button>
</div>
<div>
<el-table
border
:data="tableData"
style="width: 100%"
>
<template v-for="(item, index) in tableHeader">
<el-table-column :key="index" v-bind="item"> </el-table-column>
</template>
</el-table>
</div>
</div>
</template>
<script>
import ExcelJS from "exceljs";
import FileSaver from "file-saver";
export default {
name: "exceljs-demo",
data() {
return {
tableHeader: [
{
prop: "date",
label: "日期"
},
{
prop: "name",
label: "姓名"
},
{
prop: "address",
label: "地址"
}
],
tableData: [
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄"
},
{
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄"
},
{
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄"
},
{
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},
{
date: "2016-05-05",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄"
}
]
};
},
methods: {
// 是否为空
$isNull(val) {
return (
val === null || val === void 0 || val === "" || val.toString() === "NaN"
);
},
async exportExcel() {
const workbook = new ExcelJS.Workbook();
// 创建带有红色标签颜色的工作表
const sheet = workbook.addWorksheet("My Sheet", {
properties: { tabColor: { argb: "FFC0000" } }
});
// 生成columns
let columns = [];
this.tableHeader.map(item => {
columns.push({
name: item.label
// width: 30 // 这里设置宽度不起作用,详情请看table 下 列属性,里面没有width 属性
});
});
//设置宽度
sheet.getColumn("A").width = 15;
sheet.getColumn("B").width = 15;
sheet.getColumn("C").width = 35;
//合并
sheet.mergeCells("A2:A3");
// 表头 居中并设置边框getCell/头、getColumn列表
let h1 = sheet.getColumn("A");
let h2 = sheet.getColumn("B");
let h3 = sheet.getColumn("C");
let arr = [h1, h2, h3];
arr.map(item => {
// 居中
item.alignment = { vertical: "middle", horizontal: "center" };
// 边框
item.border = {
top: { style: "thin" },
left: { style: "thin" },
bottom: { style: "thin" },
right: { style: "thin" }
};
});
// 生成rows
let rows = [];
this.tableData.map(item => {
let arr = [];
this.tableHeader.map(sub => {
arr.push(!this.$isNull(item[sub.prop]) ? item[sub.prop] : "");
});
rows.push(arr);
});
//数据表格位置
sheet.addTable({
name: "MyTestTable",
ref: "A1", // 表格左上角的位置
headerRow: true,
totalsRow: false,
style: {
theme: "TableStyleLight1"
},
columns: columns,
rows: rows
});
// 导出
workbook.xlsx.writeBuffer().then(buffer => {
FileSaver.saveAs(
new Blob([buffer], { type: "application/octet-stream" }),
`test.xlsx`
);
});
}
}
};
</script>
以上是编程学习网小编为您介绍的“vuejs用exceljs轻松解决excel导出表格出现的合并、居中等样式属性”的全面内容,想了解更多关于 vuejs 内容,请继续关注编程基础学习网。
沃梦达教程
本文标题为:vuejs用exceljs轻松解决excel导出表格出现的合并、居中等样式属性
基础教程推荐
猜你喜欢
- css3类选择器之结合元素选择器和多类选择器用法 2024-04-26
- vue语法中v-if和v-show哪个性能好 2025-01-18
- # HTML5与CSS3从如入门到精通(第三版)(超简洁、实用学习笔记) 2023-10-29
- Javascript 获取滚动条位置等信息的函数 2024-04-23
- CSS中让DIV居中的代码 2023-12-21
- 史上最强vue总结来了,这原因我服了 2023-10-08
- Bootstrap每天必学之模态框(Modal)插件 2024-01-06
- 优雅处理前端异常的几种方式推荐 2022-10-21
- 原生JS实现H5转盘游戏的示例代码 2024-03-31
- layui框架treetable插件使用方法 2023-11-29