准备js库
XLSX.JS
链接:https://git.sheetjs.com/sheetjs/sheetjs
打开dist目录下的xlsx.mini.min.js 右上角有下载图标点击即可(根据开发需求可下载其他版本)
基本放在utils 包
引入文件
let XLSX = require('../../../utils/excel')
获取数据 导入
exportData() {
const url = "https://sheetjs.com/data/executive.json";
// 这是一个 Presidents 数据
wx.request({
url: url,
success: (res) => {
console.log(res);
// 获取数据
let raw_data = res.data
// 处理数据
const prez = raw_data.filter(row => row.terms.some(term => term.type === "prez"));
prez.forEach(prez => prez.start = prez.terms.find(term => term.type === "prez").start);
prez.sort((l, r) => l.start.localeCompare(r.start));
// 设置 表格数据
const rows = prez.map(row => ({
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}));
// 生成工作表 导入数据
const worksheet = XLSX.utils.json_to_sheet(rows); //工作表
const workbook = XLSX.utils.book_new(); // 工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, "Dates");
//找到长度最大
const max_width = rows.reduce((w, r) => Math.max(w, r.name.length), 10);
// 设置表格长度
worksheet["!cols"] = [{
wch: max_width // 表示 第一 竖列的表格宽度度
}, {
wch: 10 //表示 第二 竖列的表格宽度度
}];
// 修改标题
XLSX.utils.sheet_add_aoa(worksheet, [
["Name", "Birthday"]
], {
origin: "A1"
});
// 导出 base64 格式
var fileData = XLSX.write(workbook, {
bookType: "xlsx",
type: 'base64'
})
}
})
},
导出数据 预览
let filePath = `${wx.env.USER_DATA_PATH}/Dates.xlsx`
// 写文件
const fs = wx.getFileSystemManager()
fs.writeFile({
filePath: filePath,
data: fileData,
encoding: 'base64',
success(res) {
console.log(res)
const sysInfo = wx.getSystemInfoSync()
// 导出
if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) {
// 电脑PC端导出
wx.saveFileToDisk({
filePath: filePath,
success(res) {
console.log(res)
},
fail(res) {
console.error(res)
util.tips("导出失败")
}
})
} else {
// 手机端导出
// 打开文档
wx.openDocument({
filePath: filePath,
showMenu: true,
success: function (res) {
console.log('打开文档成功')
},
fail: console.error
})
}
},
fail(res) {
console.error(res)
if (res.errMsg.indexOf('locked')) {
wx.showModal({
title: '提示',
content: '文档已打开,请先关闭',
})
}
}
})
全部
exportData() {
const url = "https://sheetjs.com/data/executive.json";
// 这是一个 Presidents 数据
wx.request({
url: url,
success: (res) => {
console.log(res);
// 获取数据
let raw_data = res.data
// 处理数据
const prez = raw_data.filter(row => row.terms.some(term => term.type === "prez"));
prez.forEach(prez => prez.start = prez.terms.find(term => term.type === "prez").start);
prez.sort((l, r) => l.start.localeCompare(r.start));
// 设置表格数据
const rows = prez.map(row => ({
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}));
// 生成工作表
const worksheet = XLSX.utils.json_to_sheet(rows); //工作表
const workbook = XLSX.utils.book_new(); // 工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, "Dates");
//找到长度最大
const max_width = rows.reduce((w, r) => Math.max(w, r.name.length), 10);
// 设置表格长度
worksheet["!cols"] = [{
wch: max_width // 表示 第一 竖列的表格宽度度
}, {
wch: 10 //表示 第第二 竖列的表格宽度度
}];
// 修改标题
XLSX.utils.sheet_add_aoa(worksheet, [
["Name", "Birthday"]
], {
origin: "A1"
});
// 导出 base64 格式
var fileData = XLSX.write(workbook, {
bookType: "xlsx",
type: 'base64'
});;
let filePath = `${wx.env.USER_DATA_PATH}/Dates.xlsx`
// 写文件
const fs = wx.getFileSystemManager()
fs.writeFile({
filePath: filePath,
data: fileData,
encoding: 'base64',
success(res) {
console.log(res)
const sysInfo = wx.getSystemInfoSync()
// 导出
if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) {
// 电脑PC端导出
wx.saveFileToDisk({
filePath: filePath,
success(res) {
console.log(res)
},
fail(res) {
console.error(res)
util.tips("导出失败")
}
})
} else {
// 手机端导出
// 打开文档
wx.openDocument({
filePath: filePath,
showMenu: true, // 打开之后 右上角有菜单选项点一下能转发
success: function (res) {
console.log('打开文档成功')
},
fail: console.error
})
}
},
fail(res) {
console.error(res)
if (res.errMsg.indexOf('locked')) {
wx.showModal({
title: '提示',
content: '文档已打开,请先关闭',
})
}
}
})
}
})
},
录制_2023_04_14_09_12_52_124
有问题的 可以来 讨论