首页 > 编程语言 >微信小程序导出Excel文件并转发给好友

微信小程序导出Excel文件并转发给好友

时间:2024-05-09 10:23:47浏览次数:15  
标签:console 转发给 filePath 微信 Excel let 导出 res wx

需求:
小程序的列表页面增加导出功能,点击“批量导出”按钮,则自动生成导出文件,然后自动调起微信好友列表,然后可以将文件发送给微信好友

解决方案:
由于列表数据是分页加载,所以导出直接由后端同学进行生成并返回url,则我们前端同学只负责下载wx.downloadFile并转发wx.shareFileMessage官方文档

//template
<button @tap="exportData">批量导出</button>

//js
exportData(){
  const { tempFilePath } = await wx.downloadFile({
    url: URL, // 下载url
  })
  // 下载完成后转发
  await wx.shareFileMessage({
    filePath: res.tempFilePath,
  })
}  

wx.shareFileMessage在PC端提示不支持,可使用wx.saveFileToDisk保存文件(wx.saveFileToDisk仅PC端支持)

exportData(){
  const { tempFilePath } = await wx.downloadFile({
    url: URL, // 下载url
  })
  const sysInfo = wx.getSystemInfoSync()
  if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) {
    // 保存文件系统的文件到用户磁盘,仅在 PC 端支持
    wx.saveFileToDisk({
      filePath: tempFilePath,
      success(res) {
        console.log(res)
      },
      fail(res) {
        console.error(res)
      }
    })
  }else{
    await wx.shareFileMessage({
      filePath: tempFilePath,
    })
  }  
} 

关于导出

如果数据是一次全部拉取的,那么导出功能可能也行大概需要前端自己实现。

解决方案:sheetjs 官网
  • 安装
npm i --save https://cdn.sheetjs.com/xlsx-0.20.1/xlsx-0.20.1.tgz
  • 使用
import { utils, write } from 'xlsx';

getExcel(){
  // 构建一个表的数据
  let sheet = []
  let title = ['昵称', '手机号', '创建时间']
  sheet.push(title)
  this.list.forEach(item => {
    sheet.push([item.nickName, item.phone, item.createTime])
  })
  // 自定义列宽
  const colWidth = [
    { wch: 15 },
    { wch: 15 },
    { wch: 20 }
  ]
  let worksheet = utils.aoa_to_sheet(sheet); //创建工作表,将二维数组转化为工作簿
  worksheet['!cols'] = colWidth
  let workbook = utils.book_new(); // 创建工作簿
  utils.book_append_sheet(workbook, worksheet, "报名名单"); // 将工作表添加到工作簿集合中
  let fileData = write(workbook, {
    bookType: "xlsx",
    type: 'base64'
  });
  return fileData
},
async exportData(){
  let fileData = await this.getExcel()
  // 写文件
  let filePath = `${wx.env.USER_DATA_PATH}/报名名单.xlsx`
  const fs = wx.getFileSystemManager()
  await fs.writeFile({
    filePath: filePath,
    data: fileData,
    encoding: 'base64',
    bookSST: true,
    success(res) {
      console.log(res)
    },
    fail(res) {
      console.error(res)
      if (res.errMsg.indexOf('locked')) {
        wx.showModal({
          title: '提示',
          content: '文档已打开,请先关闭',
        })
      }
    }
  })
  
  const sysInfo = wx.getSystemInfoSync()
  if(!wx.canIUse('shareFileMessage')){
    if (sysInfo.platform.toLowerCase().indexOf('windows') >= 0) {
      // 保存文件系统的文件到用户磁盘,仅在 PC 端支持
      wx.saveFileToDisk({
        filePath: filePath,
        success(res) {
          console.log(res)
        },
        fail(res) {
          console.error(res)
        }
      })
    }else{
      wx.showModal({
        title: '提示',
        content: '当前微信版本不支持,请先更新微信',
        showCancel: false
      })
    }
  }else{
    wx.shareFileMessage({
      filePath: filePath,
      success() {},
      fail: console.error,
    })
  }
}

以上代码是基于MPvue框架实现的,其他框架自行参考官网Demo
(别问为啥还用这mpvue,问就是历史遗留项目)

标签:console,转发给,filePath,微信,Excel,let,导出,res,wx
From: https://www.cnblogs.com/vicky123/p/18181531

相关文章

  • ExcelDataReader:一个.Net高性能Excel开源读取器
    ExcelDataReader:一个.Net高性能Excel开源读取器来自:编程乐趣推荐一个用于读取MicrosoftExcel文件的高性能开源库。 01项目简介ExcelDataReader是一个功能强大且易于使用的开源项目,提供了丰富的读取API,专门读取Excel文件的数据,特别是处理大数据量的情况。ExcelDataReader......
  • 小组练习:拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小
    小组练习:拿出手机发朋友圈/微信群,收集你的目标用户对你当前产品的NPS。每个项目小组收集不少于30条投票,截图展示在学习通提交解答的同时,可以同步发布在团队和个人博客上,作为学习心得体会,记录下来。我的答案:【第二组】NPS(NetPromoterScore)是一种用来衡量客户满意度和......
  • uniapp+vue H5页面实现微信公众号授权登录
    <template><viewclass="my-userinfo-container"><!--头像和昵称区域--><viewclass="top-box"><image:src="form.headimgurl"class="avatar"></image>......
  • 微信小程序加载更多
    背景:博客小程序开发,涉及博客列表加载更多需求。前提:接口:https://abc.com/api/xx?pageSize=xx&page=xxview代码:<viewclass="container"><viewwx:for="{{items}}"wx:key="id"><text>{{item.cid}}--{{item.title}}</text>......
  • 读取PDF文件,并写入excel表
    importrefromopenpyxlimportWorkbookpdf_name='D:/beifangzhongzhi/zhongye/百保科技/疾病/疾病.pdf'importPyPDF2defget_text(pdf_name):withopen(pdf_name,'rb')asfile:reader=PyPDF2.PdfReader(file)num_pages=......
  • 27.企业微信-L2
    importrequestsclassTestWework:deftest_get_token(self):self.corp_id="ww0500b1708efeb406"self.corp_secret="5fas7s3wQzC6k5W11SqZ1dxMcXvC57yKXi_NMVXu4pkBNY"self.base_url="https://qyapi.weixi11n.qq.......
  • python教程6.4-excel处理模块
    第三方开源模块安装 创建文件打开已有文件写数据选择表保存表遍历表按行遍历按列遍历遍历指定行列遍历指定第几列数据删除表设置单元格样式字体对齐设置行高列宽 ......
  • python+selenium+excel自动登录,自动填写网页
    经常有些网页要登录,然后频繁填写一些重复的内容,本文暂只考虑不需要验证码的情况,可以通过selenium模拟用户行为在页面操作,用excel拖出相似内容,用xlrd读取并填写到网页中。导入相关包fromseleniumimportwebdriverimportosimportxlrdimportxlwtimportjsonimportreq......
  • excel 汇总运算后生成柱状图
    defsum(df,q_name,sum_index):#df=pd.DataFrame#pd_frame.sum()#print(df.values)#Aggregations(聚合),多索引,,'季度'df_agg=df.groupby(['厂家','季度'])['销量'].agg([np.sum])......
  • Glang&Mysql&Excel
    packagemainimport( "database/sql" "fmt" "log" _"github.com/go-sql-driver/mysql" "github.com/tealeg/xlsx")funcmain(){ //连接MySQL数据库 db,err:=sql.Open("mysql","root:123456......