微信小程序云开发导出数据到excel,支持自动列宽,内容居中

微信小程序云开发导出数据到excel,支持自动列宽,内容居中,很详细


很早以前做过小程序导出excel功能,那时候在网上找的资料做的比较简单,是用node-xlsx写的,
最近又要做一个导出功能,在网上找了一圈也基本都是node-xlsx做的,而且都是简单的demo,不支持居中和自动列宽,所以我找了大量资料找到了这个exceljs,还比较好用的,废话不多说,下面是我写的一个demo,注释写的比较详细,可以直接复制使用,我把步骤写下来,供大家学习使用:

  1. 找到云函数目录,鼠标右键创建新的nodejs函数,我这里就建一个函数名叫export
    在这里插入图片描述

  2. 在export文件夹上右击,打开终端
    在这里插入图片描述

  3. 安装exceljs依赖 npm install exceljs
    在这里插入图片描述
    安装好之后export文件夹下面就会多出两个文件
    在这里插入图片描述

  4. 然后我们就可以在index.js中编写云函数代码了

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
}) // 使用当前云环境
const excel = require('exceljs');

// 云函数入口函数
exports.main = async (event, context) => {
  // 创建一个表格
  const workbook = new excel.Workbook();
  // 创建一个sheet
  const worksheet = workbook.addWorksheet('Sheet 1');
  // 假设data是一个二维数组是我们要导出去的数据,代表表格数据  row 是每一行数据
  // 这里我们伪造假数据 你们到时候可以从前端传进来
  var data = [
    ["姓名", "微信号", "年龄"],
    ["小熊熊1", "hyx1416120335", "18"],
    ["小熊熊2", "hyx1416120335", "25"]
  ];
  data.forEach((row, rowIndex) => {
    row.forEach((value, colIndex) => {
      // 设置单元格的值  
      worksheet.getCell(rowIndex + 1, colIndex + 1).value = value;
      // 假设你想让所有内容都居中,并且设置自动列宽(这可能需要一些自定义逻辑)  
      worksheet.getColumn(colIndex + 1).alignment = {
        horizontal: 'center',
        vertical: 'middle'
      };
      // 注意:exceljs没有直接的“自动列宽”功能,但你可以根据内容长度来动态设置列宽 如果没有达到你们的效果,可以尝试调一下5这个数值
      worksheet.getColumn(colIndex + 1).width = Math.min(20, value.toString().length * 5);
    });
  });

  // 将工作簿写入文件 返回buffer流
  const buffer = await workbook.xlsx.writeBuffer();
  // 把excel文件保存到云存储里 并将下载链接返回到前端
  var fileName = "test.xlsx";
  let res = await cloud.uploadFile({
    cloudPath: 'exportExcel/' + fileName,
    fileContent: buffer, //excel二进制文件
  })
  if (!res.fileID) {
    return '上传失败'
  } else {
    // 获取临时链接路径
    let res2 = await cloud.getTempFileURL({
      fileList: [res.fileID],
    })
    if (!res2.fileList.length) {
      return '获取下载地址失败'
    } else {
      let fileUrl = res2.fileList[0].tempFileURL
      console.log('文件下载链接' + fileUrl);
      return fileUrl
    }
  }

}
  1. 然后右击上传云函数
    在这里插入图片描述
  2. 云函数上传完成后,就可以在前端调用了
    目录结构
    在这里插入图片描述

wxml代码

<button bind:tap="export">导出到excel</button>

js代码

Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  export () {
    wx.cloud.callFunction({
      name: 'export',
      data: {}, // 可以将参数传入到云函数中
      success: res => {
        console.log(res);
        var downUrl = res.result;
        // 这个就是downUrl下载链接了
      },
      fail: err => {
        console.log(err);
      }
    })
  }
})

完毕!!!
PS:本人本职是java工程师,业余学习小程序5年,如有不足,请予以指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值