记录--vue使用Luckysheet插件实现导入导出

Luckysheet开发的excel导入导出库-Luckyexcel (opens new window)已经实现了excel导入功能(目前只支持xslx文件);支持多sheet

更新导出边框问题
更新导出类型不同时样式

Luckysheet导入文档

导入文件(仅限.xlsx文件)

  1. npm引入npm install luckyexcel
  2. 引入到页面中import LuckyExcel from 'luckyexcel'
  3. 使用方法:
		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,支持导出样式(导出图片以及图表还没有实现)

  1. 引入插件npm install exceljs
  2. 实现代码,我是单独放在一个文件里面再调用,代码如下:
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"; 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值