需要用到xlsx.core.min.js的js库,以实现导出excel。
下载链接:
SheetJS: https://github.com/SheetJS/sheetjs
找到dist目录下,xlsx.core.min.js文件,将它复制到你项目的/common/js/目录下。
1、导入js库;
import * as XLSX from '@/common/js/xlsx.core.min.js';
export default {
data() {
return {
list: [],
}
},
}
2、编辑导出数据。
let sheet = [] //最终需要的数据
let title = ["柜号", "合同号"] //表头
sheet.push(title) //导入表头
//循环表单数据
this.list.forEach(item => {
let rowcontent = []
rowcontent.push(item.containerNo)
rowcontent.push(item.contractNo)
sheet.push(rowcontent) //添加一行表单
})
3、利用js库导出excel。
const worksheet = XLSX.utils.aoa_to_sheet(sheet);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "船期");
const fileData = XLSX.write(workbook, {
bookType: "xlsx",
type: 'base64'
});
var fileName = `船期${new Date().getTime()}.xlsx`
const newFilePath = uni.env.USER_DATA_PATH + '/' + fileName // 文件名对应表名,多个表的情况可以自己测试
const fs = uni.getFileSystemManager()
fs.writeFile({
filePath: newFilePath,
data: fileData,
encoding: 'base64',
success: res => {
const sysInfo = uni.getSystemInfoSync()
if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) {
uni.saveFileToDisk({
filePath: newFilePath,
success: console.log,
fail: console.error
})
} else {
uni.openDocument({
filePath: newFilePath,
showMenu: true, // 需要添加showMenu允许用户导出
success: console.log,
fail: console.error
})
}
},
fail: e => {
if (e.errMsg.indexOf('locked')) {
wx.showModal({
title: '提示',
content: '文档已打开,请先关闭',
})
}
})
这样就可以了。