Luckysheet开发的excel导入导出库-Luckyexcel (opens new window)已经实现了excel导入功能(目前只支持xslx文件);支持多sheet
更新导出边框问题
更新导出类型不同时样式
导入文件(仅限.xlsx文件)
- npm引入
npm install luckyexcel
- 引入到页面中
import LuckyExcel from 'luckyexcel'
- 使用方法:
let file = e.target.files;
if (file == null || file.length == 0) {
this.$message.warning("文件为空,请重新选择文件");
return;
}
let name = file[0].name;
let suffixArr = name.split("."),
suffix = suffixArr[suffixArr.length - 1];
if (suffix != "xlsx") {
this.$message.warning("只支持xlsx文件,请重新选择");
return;
}
luckysheet.destroy(); // 先销毁当前容器
LuckyExcel.transformExcelToLucky(file[0], function(
exportJson,
luckysheetfile
) {
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
this.$message.warning("读取excel文件内容失败,目前不支持xls文件!");
return;
}
luckysheet.create({
container: "容器ID",
showinfobar: false,
data: exportJson.sheets,
title: exportJson.info.name,
userInfo: exportJson.info.name.creator
});
});
导出表格(支持样式以及多sheet)
目前官方没有导出的方法,但是有告知其他两种方式(XLSXjs和exceljs)能够实现导出,下面使用的插件为exceljs,支持导出样式(导出图片以及图表还没有实现)
- 引入插件
npm install exceljs
- 实现代码,我是单独放在一个文件里面再调用,代码如下:
const Excel = require('exceljs')
async function exportSheetExcel(luckysheet, name) {
// 1.创建工作簿,可以为工作簿添加属性
const workbook = new Excel.Workbook();
// 2.创建表格,第二个参数可以配置创建什么样的工作表
luckysheet.every(function (table) {
if (table.data.length === 0) return true;
const worksheet = workbook.addWorksheet(table.name);
// 3.设置单元格合并,设置单元格边框,设置单元格样式,设置值
setStyleAndValue(table.data, worksheet);
setMerge(table.config.merge, worksheet);
setBorder(table.config.borderInfo, worksheet);
return true;
})
// 4.写入 buffer
const buffer = await workbook.xlsx.writeBuffer();
saveFile(buffer, name);
return buffer
}
var saveFile = function (buf, name) {
let blob = new Blob([buf], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });
const downloadElement = document.createElement('a');
let href = window.URL.createObjectURL(blob);
downloadElement.href = href;
downloadElement.download = name + ".xlsx";