微信小程序导入导出到excel

这篇具有很好参考价值的文章主要介绍了微信小程序导入导出到excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

补充在最前面:导入不一定用这么复杂的,比如下面的思路就是,把数据复制到粘贴板,然后从粘贴板上取数据,数据处理完成后,可以导入云数据库,也可以导出到站贴板。下面这段看起来有点乱。主要是处理省市县镇村 5级,把表格数据转换成json数据,一开始用导入excle在处理的想法,现在看太愚蠢了,既然数据有了,从粘贴板拿是最方便的。拿来怎么处理就看你自己需求。

//复制第一次
 copyabc()
  {
    let that=this
    var firstarr={}
    var copyarr={}
    wx.getClipboardData({
      success (res){
        let str=res.data
        str = str.replace(/[\r\n]/g,"");
   //  console.log(str);
   //  str='{"_id":"1","c":['+str+']}';
   //  console.log(str);
   copyarr=JSON.parse(str)
   copy234=copyarr.c
   //  console.log(copy234)
      }
    })     
  },
// 复制第二次
  copypost(){
    let that=this
    var arr=[]
    var zoom=[]
    var copyarr={}
    var isbk=false
    wx.getClipboardData({
      success (res){
        let str=res.data
        str = str.replace(/[\r\n]/g,"");
      //  str = str.replace(/}/g,"");
     //   str = str.replace(/{/g,"");
     //   console.log(str)
     str=str.slice(0,-1);
  //   console.log(str);
     str='{"_id":"1","c":['+str+']}';
   //  console.log(str);
     copyarr=JSON.parse(str)
     console.log(copyarr)
     arr=copyarr.c;

     for(let i=0;i<arr.length;i++)
     {
      let ccode=arr[i].c
      let cname=arr[i].n
      for(let j1=0;copy234.length;j1++)
      {
        let arr1=copy234[j1]
       if(ccode.substr(0,4)==arr1.c)
       {
         let arr1d=arr1.d
        for(let j2=0;arr1d.length;j2++)
        {
          let arr2=arr1d[j2]
          if(ccode.substr(0,6)==arr2.c)
         { let arr2d=arr2.d
          for(let j3=0;arr2d.length;j3++)
          {
            let arr3=arr2d[j3]
            if(ccode.substr(0,9)==arr3.c)
            {
             arr3.d.push(arr[i])
             isbk=true
             break;
            }
         
          }
         }
         if(isbk)
         {break}
        }
       }
       if(isbk)
       {break}
      }
    isbk=false

     }

   //  console.log(copy234)
  let outarr=[]
  let outstr=''
     for(let i=0;i<copy234.length;i++)
     {
       let arr=copy234[i]
       let js1={
         _id:arr.c,
        n:arr.n,
        d:arr.d
     }
     outstr=outstr+JSON.stringify(js1)+'\n'
      }
    //  console.log(outstr)
      
      wx.setClipboardData({
        data:outstr,
        success: function(res) {
        },
        fail: function(res) {
        }
      });  
    }
   
  })
   //console.log(tdate)

  },

导入excel到微信参考文字:小程序读取excel表格数据,并存储到云数据库 | 微信开放社区

测试过,能够成功;下面是几个代码段,复制方便一点,

小程序端的代码

  chooseExcel (){
    let that = this 
    wx.chooseMessageFile ({
    count :1,
    type :'file',
    success ( res ){
    let path = res . tempFiles [0]. path ;
    console . log ("选择 excel 成功", path )
     that . uploadExcel ( path );
     }
    })},
    uploadExcel ( path ){
      let that = this 
      wx.cloud.uploadFile ({
      cloudPath : new Date (). getTime ()+'.xls', 
      filePath : path ,//文件路径
      success : res =>{
      console .log("上传成功", res.fileID)
      that.jiexi ( res . fileID )},
      fail: err =>{
      console . log ("上传失败", err )}
     }) },
     jiexi ( fileId ){
      wx.cloud. callFunction ({
      name :"excel",
      data :{
      fileID : fileId},
      success ( res ){
      console . log ("解析并上传成功", res )},
      fail ( res ){
      console . log ("解析失败", res )}
     }) },

云函数的代码---数据库里边先建个intable表,应该就能成功了

const cloud = require('wx-server-sdk')
cloud.init({env: 'alpha-xxxx'})
var xlsx = require('node-xlsx');
const db = cloud.database()
exports.main = async(event, context) => {
  let {
    fileID
  } = event
  //1,通过fileID下载云存储里的excel文件
  const res = await cloud.downloadFile({
    fileID: fileID,
  })
  const buffer = res.fileContent

  const tasks = [] //用来存储所有的添加数据操作
  //2,解析excel文件里的数据
  const all_excel_data = [] 
  var colmax=1;
  var idtop='';
  var sheets = xlsx.parse(buffer); //获取到所有sheets
  sheets.forEach(function(sheet) {
    console.log(sheet['name']);
    var col= sheet['data'][0];
    for(let i=0;i<50;i++){
      if(col[i]==""||col[i]==undefined)
      {colmax=i;
        console.log(colmax+'')
        break}
    }
    for (var rowId in sheet['data']) {
      console.log(rowId);
      var row = sheet['data'][rowId]; //第几行数据
      if (rowId < 3+1){
        for(let i=0;i<colmax;i++){
        row[i]=row[i]+'';
        idtop=idtop+'"hd'+String(rowId)+String(i)+'":"'+row[i].trim()+'",'
        };

      }
      
      if (rowId > 3 && row) { //第一行是表格标题,所有我们要从第2行开始读
        //3,把解析到的数据存到excelList数据表里
        var idetail=''
        for(let i=0;i<colmax;i++){
          if(row[i]==undefined){row[i]=''}
          row[i]=row[i]+'';
          idetail=idetail+'"bd'+String(i)+'":"'+row[i].trim()+'",'
          };
        idetail=idetail.slice(0,-1);
        console.log(idetail)
        all_excel_data.push(JSON.parse('{'+idetail+'}'))
      }
    }
  });

  // 等待所有数据添加完成
  idtop=idtop.slice(0,-1);
  console.log(idtop)
  idtop=JSON.parse('{'+idtop+'}')
  console.log(idtop)
  var result=await db.collection('intable').add({data:
    {
    tbody:all_excel_data,
    thead:idtop,
    colmax:colmax,
    dt:new Date(). getTime()
    }}).then(res=>{
    return res
  }).catch(err=>{return err})
  return result
}

--导出到excel,两个方案

第一个还是按上面文字类似的思路,云函数解决(本地解决就要本地安装这个包,包本身可能太大,小程序打包完了不一定能够上传,本人没测试过),第一步读取数据-打包生成excel,然后上传到云存储,返回链接,把链接给客户。

第二个思路:

简单一点,1、读取数据,拼接成文字 2、文字复制到粘贴板,

3、客户把数据粘贴到微信留言,然后粘贴到或者直接粘贴到excel,excel分列,完成

(用excel 里边分列是 \t,分行是回车\n,单元格内的回车暂时没办法用JS解决,现在的解决方案是在vba中解决,用替换的方式解决,就是比如js中替换成****,然后在vba中替换成char(10),下面这段代码放在thiswordbook中,()换成回车,后面这段代码是用来调整行距的,加了回车,自动调整一下行距比较舒服)

Sub abc()

For Each c In Range("A1:B100")
If InStr(c.Value, "()") > 0 Then c.Value = Replace(c.Value, "()", Chr(10))
Next

 
Rem 第1行到第100行进行一次循环(可根据需要自己改行数)
For i = 1 To 100
 
Rem 隐藏行不执行(可根据需要自己修改,进行了更新,如果需要执行隐藏行请参考下面图片里的代码)
If Not Rows(i).Hidden Then
 
Rem 第i行调整为最适合行高(如果不需要此步骤删除下面的代码)
Rows(i).AutoFit
 
Rem 第i行高度+6(可根据需要自己改高度)
Rows(i).RowHeight = Rows(i).RowHeight + 6
 
End If
 
Next

End Sub

下面是拼成文本和复制到粘贴板的代码,都没修改,用的是源码,没把里边的多余去掉

  getnew()
  { let that=this
    inlist.limit(1).get().then(res => {
      /**
      
       */
      if (res.data.length == 0) {
        wx.showToast({
          title: '无出入库数据',
          icon: 'none'
        });
			return;	
      }
   let arr=res.data[0].incar
   var instr='carno;cname;tel;cardid;cfrom;cto;inidtime;rk\n';
   var outstr='carno;cname;tel;cardid;cfrom;cto;inidtime;outtime;rk\n';
   for(let j=0;j<arr.length;j++){
    //var obj2={sobj:JSON.stringify(arr[j]),tdate:that.js_date_time(tdate)}
    let obj2={jid:j,selfdt:that.js_ymd(arr[j].inid)}
    let obj3={...arr[j],...obj2} 
  that.data.inlist.push(obj3)
  instr=instr+arr[j].carno+';'+arr[j].cname+';'+arr[j].tel+';'+arr[j].cardid+';'+arr[j].cfrom+';'+arr[j].cto+';'+that.js_ymd(arr[j].inid)+';'+arr[j].rk+';\n';
}
    let arr2=res.data[0].outcar
    for(let j=0;j<arr2.length;j++){
     //var obj2={sobj:JSON.stringify(arr[j]),tdate:that.js_date_time(tdate)}
     let obj2={jid:j,selfdt:that.js_ymd(arr2[j].outid),inidtime:that.js_ymd(arr2[j].inid)}
     let obj3={...arr2[j],...obj2} 
     outstr=outstr+arr2[j].carno+';'+arr2[j].cname+';'+arr2[j].tel+';'+arr2[j].cardid+';'+arr2[j].cfrom+';'+arr2[j].cto+';'+that.js_ymd(arr2[j].inid)+';'+that.js_ymd(arr2[j].outid)+';'+arr2[j].rk+';\n';
   that.data.outlist.push(obj3)
     }
that.data.instr=instr;
that.data.outstr=outstr;
    })
  },
  copyin(){
    let that=this
    wx.setClipboardData({
      data: that.data.instr,
      success: function(res) {
      },
      fail: function(res) {
      }
    });

  },
  copyout(){
    let that=this
    wx.setClipboardData({
      data: that.data.outstr,
      success: function(res) {
      },
      fail: function(res) {
      }
    });
  },

最后,欢迎尝试一下微信小程序-复制就好,里边就是一些带有源码的小案例。文章来源地址https://www.toymoban.com/news/detail-493142.html

到了这里,关于微信小程序导入导出到excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序中pdf的上传、下载及excel导出

    上传两种方法: 1.用vant weapp组件: 参考:https://blog.csdn.net/weixin_38566069/article/details/110229404 提示:突然冒出一个报错:wx.chooseMessageFile点击很多次后就突然无效了 昨天上传功能在【微信开发工具和移动端】都可以用,早上突然实现了。 查了下是官方给出的解释是: 2023年9月

    2024年02月12日
    浏览(56)
  • 前端实现微信小程序JSON数据导出Excel表

    最近做微信小程序相关项目需要将数据导出为excel形式,在网上查了许多资料来实现这个功能,以下是我使用的方法,特此记录一下,以便之后使用。 解决方法:使用sheetJS代码插件实现 github地址:https://github.com/SheetJS/sheetjs 下载地址:https://cdn.sheetjs.com/ 代码如下,具体使用

    2024年01月17日
    浏览(46)
  • 微信小程序 -- 数据库数据excel文件批量导入

    一、excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 2.云函数代码 js代码

    2024年02月12日
    浏览(67)
  • 微信小程序将接口返回的文件流预览导出Excel文件并转发

    把接口url替换就可以用了 效果

    2024年02月15日
    浏览(57)
  • 【微信小程序】导出 Excel 报表并分享,使用xlsx库生成 Excel,使用echars插入图表、使用pdfmake导出为PDF文件

    要在微信小程序中导出 Excel 报表并分享,可以使用第三方库 xlsx 来生成 Excel 文件,并使用 wx.saveFile 方法将文件保存到本地,然后使用 wx.shareFile 方法来分享文件。 以下是一个示例代码,演示如何在微信小程序中导出 Excel 报表并分享: 首先,安装依赖库 xlsx ,可以使用 npm

    2024年02月13日
    浏览(142)
  • 微信小程序微信原生小程序如何通过后端返回的二进制流导出excel文件并保存和转发

    首先后端返回给我们的数据是这样的,一串二进制流 然后直接上代码吧,注释基本上说的差不多了 打开后的界面就是这样,导出成功,然后右上角三个点可以保存本地和转发

    2024年02月11日
    浏览(58)
  • pyqt怎么让窗口显示在最前面

    可以使用 PyQt 的 setWindowFlag() 函数来设置窗口的 \\\"AlwaysOnTop\\\" 标志。这样就可以让窗口始终显示在最前面了。 下面是一个例子: 注意,这个方法并不是在所有系统上都有效,有些系统可能会忽略这个标志。如果想要实现在所有系统上都能让窗口显示在最前面,可以使用 PyQt 的

    2024年02月15日
    浏览(44)
  • 【latex】参考文献排版前移,在最前面引用\usepackage{url}

    参考文献从21开始排版前移了 解决方案:在最前面加一行 申申yyds!!最后真是url的问题,学习到了申申解决问题的逻辑,感觉好丝滑 请教了申申,申申说是因为: 分栏和单词压缩到同一行的冲突 为了好看,单词间不换行,并且长字符串尽量保持在同一行,允许适当的溢出

    2024年01月17日
    浏览(50)
  • 【微信小程序】小程序知识补充篇

    🎁写在前面: 观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列又更新了呀。 还有就是中秋节就快来啦,程序员过中秋,当然是要好好放松一下啦,那么中秋前我们就不能偷懒了,赶紧学习起来哈哈! 上文我们讲解了页面导航,那么接下来我们补充一点小程序的

    2024年01月25日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包