更新记录

1.0.4(2024-05-11) 下载此版本

  1. 更新文档

1.0.3(2024-04-03) 下载此版本

  1. 修复微信小程序报错

1.0.2(2024-02-18) 下载此版本

  1. 更新示例工程
  2. 更新文档
  3. 原路径jssdk更名为js_sdk
查看更多

平台兼容性

阿里云 腾讯云 支付宝云
×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


EXCEL&JSON 互转 sv-excel-json-each

EXCEL&JSON 互相转换,源于 EXCEL 转 JSON 函数 插件,使用文档请移步至原插件。

前言

本插件开发之初仅考虑自用,请尊重并支持原 EXCEL 转 JSON 函数 插件。

改动内容

强烈建议优先了解原 EXCEL 转 JSON 函数 插件。

  1. 将原插件中的 getExcelToJson 与 getJsonToExcel 两个云函数改为 sv-excel-json-each 云对象,并放至插件内部,解决每次导入插件都需要从示例工程中复制云对象移至项目中的问题,现一键导入即可。

  2. 修改 jssdk/parseExcel.js 文件中 downloadXLSX 方法代码,修复原插件可能会报错 Failed to execute 'atob' on 'Window'问题。

  3. 原插件中 parseExcel.js 文件中 downloadXLSX 方法已被我移除,已用其他可兼容 H5、安卓 App、微信小程序三端的方式代替。

  4. 较大规模改动 parseExcel.js 文件,重要改动如下:

    • 由于 uni.chooseFile 只支持 H5 端,现添加微信小程序的 wx.chooseMessageFile 和 App 端 Native.js(目前只支持安卓)调用文件选择面板,因此现已兼容 H5、安卓 App、微信小程序三端。

    • 修改当 type 为 base64 模式时,不提供自动下载功能,仅当 type 为 file 模式时开启 autoDownload 才提供自动下载功能

安装

  1. 插件市场 中点击 下载插件并导入HBuildeX

插件兼容性

✔️ 实测可行 ❌ 未兼容 ➖ 未实测

阿里云 腾讯云 支付宝云 Vue2 Vue3 H5 App 微信小程序
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

纯 js 插件

使用示例

import { importToJson, exportToExcel } from "@/uni_modules/sv-excel-json-each/js_sdk/parseExcel.js";
import { testList, testAddList } from "@/api/test"; // 测试用例列表查询与批量导入接口

const testMapping = {
  test_id: "测试用例ID",
  test_name: "测试用例名称",
};

/**
 * 测试用例导出
 */
async function testExport(params) {
  // 调用接口获取列表数据
  const dataRes = await testList(params);
  const handleData = dataRes.data?.map((item) => {
    return {
      test_id: {
        v: item.test_id,
        t: "s",
        s: {
          alignment: {
            horizontal: "left", // 数字列会默认右对齐
          },
        },
      },
      test_name: {
        v: item.test_name,
        t: "s",
        s: {
          alignment: {
            horizontal: "left",
          },
          font: {
            color: {
              rgb: "FF0000", // 文字标红
            },
          },
        },
      },
    };
  });
  exportToExcel({
    params: {
      data: handleData,
      title: "logs",
      mapping: testMapping,
      type: "file",
      // merges: [{ start: [0, 1], end: [0, 4] }]
    },
    autoDownload: true,
  }).then((res) => {
    // console.log('onExport ===>', res)
  });
}

/**
 * 测试用例导入
 */
async function testImport(cover, callback) {
  let sheetList = [{ index: 0 }, { index: 1 }];
  const toJsonRes = await importToJson(sheetList);
  const dataRes = toJsonRes.data.data || [];
  // 转换为接口原数据格式
  const handleData = dataRes.map((item) => {
    return {
      test_id: item["测试用例ID"] + "", // 导入时转换为字符串类型
      test_name: item["测试用例名称"] + "",
    };
  });
  console.table(toJsonRes.data);
  console.table(handleData);
  // 调用批量导入接口
  const importRes = await testAddList({
    data: handleData,
    cover,
  });
  if (callback) callback(importRes);
}

/**
 * 测试用例模板下载
 */
function testTemplate() {
  exportToExcel({
    params: {
      data: [
        {
          test_id: "测试id",
          test_name: "测试名称",
        },
      ], // 若空数据数组,需要有个空对象
      title: "test",
      mapping: testMapping,
      type: "file",
    },
    autoDownload: true,
  }).then((res) => {
    // console.log('onExport ===>', res)
  });
}

注意事项

  1. 对单元格操作时,写法格式按照上述示例中严格把控。
  2. 更多请参照原 EXCEL 转 JSON 函数 插件文档。

写在最后

本插件开发之初仅考虑自用,请尊重并支持原 EXCEL 转 JSON 函数 插件。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问