exceljs的使用

文档:https://github.com/exceljs/exceljs/blob/master/README_zh.md#boolean-value
 
1. npm install exceljs  
    npm install file-saver
2.新增downloadExcel.js文件
import saveAs from 'file-saver'; const Excel = require("exceljs"); import { VFrame } from "n8-vframe"; const workbook = new Excel.Workbook(); workbook.created = new Date(); workbook.modified = new Date(); var worksheet = workbook.addWorksheet("sheet1"); function downloadExcel(importTemplate, fileName) { for (var i = 0; i < importTemplate.length; i++) { if (importTemplate[i].url != "") { var columnName = importTemplate[i].column; var url = importTemplate[i].url; var index = url.lastIndexOf("\/"); var name = url.substring(index + 1, url.length); if (name == "GetEnumBaseData") { getEnumByUrl(url, importTemplate[i].enumName).then(res => { setColumns(columnName, res); saveExcel(fileName, importTemplate) }) } else { getComboxByUrl(url).then(([res, description]) => { var tips = JSON.stringify(description); tips = tips.replace(/\"/g, ""); var reg = /[,,]/g; var text = tips.replace(reg, '\n').replace(/\[|]/g, '').replace(/\{|}/g, ''); setColumns(columnName, res, text); saveExcel(fileName, importTemplate) }) } } else { var Tips = importTemplate[i].Tips; var columnName = importTemplate[i].column; if (Tips != "") { setColumnsNote(columnName, Tips); } } } } function setColumns(columnName, res, tips) { for (var i = 2; i < 1000; i++) { worksheet.getCell(columnName + i).dataValidation = { type: 'list', allowBlank: true, formulae: res }; worksheet.getCell(columnName + i).note = tips; } } function setColumnsNote(columnName, Tips) { for (var i = 2; i < 1000; i++) { worksheet.getCell(columnName + i).note = Tips; } } function saveExcel(fileName, importTemplate) { worksheet.columns = importTemplate; workbook.xlsx.writeBuffer().then(function (buffer) { saveAs(new Blob([buffer], { type: 'application/octet-stream' }), fileName + '.' + 'xlsx'); }); } function getComboxByUrl(url) { return new Promise((resolve, reject) => { var data = []; var description = []; var curData = []; VFrame.http.request(url, {}).then(res => { res.items.forEach(item => { description.push({ value: item.value, description: item.displayText }) data.push(item.value); var newData = '"' + data.join(',') + '"' curData[0] = newData; }) resolve([curData, description]) }) }) } function getEnumByUrl(url, parameter) { return new Promise((resolve, reject) => { var data = []; var curData = []; VFrame.http.request(url, { enumName: parameter }).then(res => { res.items.forEach(item => { data.push(item.key); var newData = '"' + data.join(',') + '"' curData[0] = newData; }) resolve(curData) }) }) } export default downloadExcel;
3.使用     import downloadExcel from "@/config/downloadExcel";
  
  importTemplatejson --数据   fileName --文件的名字
 downloadExcel(this.importTemplate,this.fileName)


 

猜你喜欢

转载自www.cnblogs.com/huanhuan55/p/12073077.html