微信小程序导入 导出excel 文件 预览文件并转发

文章目录

  • 准备js库
  • 引入文件
  • 获取数据 导入
  • 导出数据 预览
  • 全部

准备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

有问题的 可以来 讨论


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部