uniapp 微信小程序导出excel功能实现

需要用到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: '文档已打开,请先关闭',
			})
		}
})

这样就可以了。

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值