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

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

有问题的 可以来 讨论

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于微信小程序的新能源汽车信息安全服务平台 微信小程序;java;JSP; MYSQL;新能源汽车信息;MD5加密 系统后台登录页面 此次新能源汽车信息安全服务平台的后台登录需要管理员录入正确的用户名和密码,同时考虑到登录的安全性,在登录环节加入了验证码来防止密码被暴力破解, 新能源汽车信息后台页面 新能源汽车信息安全服务平台的后台管理内容主要包括了车辆管理、周边商品管理、购买管理以及用户管理几个部分,同时对于车辆类别及商品类别进行分类管理,来满足用户端的查询需求,通过后台的留言板可以查看到前端用户的反馈,系统管理员可以后台的功能模块实现新能源汽车信息及商品信息的管理和维护, 车辆信息管理页面 车辆信息的管理可以实现批量导入,管理员可以通过模板下载来实现Excel表格的导入,对应的车辆信息内容主要包括了车辆编号、车辆品牌、车辆名称、车型、驱动方式、颜色、价格、图片以及换挡方式等车辆基本信息,通过后台可以实现修改和删除。 汽车周边商品管理页面 对于汽车周边商品的管理与车辆管理类似,也可以通过批量导入的方式来试下,对应的商品信息包括了商品编号、商品名称、商品类型、价格、销量、库存以及商品图片等内容。 小程序首页信息页面 新能源汽车信息安全服务平台的小程序首页以轮播图的方式呈现相关新能源汽车的图片,同时罗列了不同品牌向下的车辆图片内容,首页的导航信息主要包括首页、购物车、分类和我的,用户通过首页图片点击进入到对应的汽车信息界面,还可以通过分类来进行汽车商品和汽车信息的查询,汽车周边商品加入购物车后可以通过购物车进行查询, 车辆信息页面 用户通过首页图片或者分类查询界面可以进入到车辆详细信息界面,车辆详细信息主要包括了车辆编号、车辆品牌、车辆名称、颜色价格以及驱动方式等基础信息,通过下方的图片可以更加直观看到车辆。 汽车周边商品页面 汽车周边与车辆信息类似,点击对应的商品即可进入到详细介绍界面,包括了商品价格、销量、库存等信息,同时可以结合图片内容进行选择和购买。
要在微信小程序导出 Excel 文件,您可以使用第三方库js-xlsx来处理Excel文件的生成。下面是一个简单的示例代码,演示如何从微信小程序导出一个包含数据的 Excel 文件: 1. 首先,在小程序项目中安装js-xlsx库。在项目根目录下执行以下命令: ``` npm install xlsx ``` 2. 在需要导出 Excel 的页面或组件中引入xlsx库: ```javascript const XLSX = require('xlsx'); ``` 3. 假设您有一个包含数据的数组 `data`,您可以使用以下代码来创建一个工作簿并将数据导出Excel 文件: ```javascript // 创建工作簿 const workbook = XLSX.utils.book_new(); // 创建数据表 const worksheet = XLSX.utils.json_to_sheet(data); // 将数据表添加到工作簿 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 将工作簿转换为二进制对象 const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 保存文件 wx.saveFile({ tempFilePath: wx.env.USER_DATA_PATH + '/temp.xlsx', // 临时文件路径 filePath: 'temp.xlsx', // 文件名 success: function (res) { // 导出成功后的逻辑 console.log('导出成功', res.savedFilePath); }, fail: function (err) { // 导出失败后的逻辑 console.log('导出失败', err); } }); ``` 以上代码将生成一个临时的 Excel 文件,并将其保存到用户的本地路径中。您可以根据自己的需求进行文件名和保存路径的设置。 请注意,此示例假设您已经在小程序的配置文件中启用了npm支持,并且已经安装了微信开发者工具的最新版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值