vk-unicloud实现上传excel并解析为json格式

uniclouduniappvk-unicloud上传excel

自从开始使用uniapp生态一把梭之后,我的后端就一直是使用vk开发的vk-unicloud框架进行云函数和后台管理的二次开发,其后台基于elementUI、非常适合做各种管理后台。

前几年在做某个教育项目的时候,遇到了需要批量上传题库的需求,大致就是把上传的excel解析为json后再入库,但vk没有给出导入的轮子,我在使用一个插件之后实现了这个需求,如果你也有类似需求,可以尝试一下,整体还是非常简单的。

首先你需要导入这个公共模块:EXCEL转JSON函数

然后,在router云函数上右击,选择管理公共模块,然后在ml-excel-to-json上打钩,确定后记得上传一下公共模块。

最后,在你需要导入excel的页面增加如下代码:

javascript
// 这是把array buffer转成base64
uni.request({
	url: url,
	method: 'GET',
	responseType: 'arraybuffer',
	success: res => {
		let base64 = uni.arrayBufferToBase64(res.data);
		callback(base64);
	}
});
javascript
importExcel() {
	uni.chooseFile({
		count: 1,
		extension: ['.xls', '.xlsx'],
		success: res => {
			// 这就是上边那个方法
			vk.myfn.urlTobase64(res.tempFilePaths[0], base64 => {
				vk.callFunction({
					url: '.../importExcel',
					needAlert: false,
					data: {
						rows: that.importExcelRows - 1, // 你需要写个框让用户输入表格末尾的行号
						base64: base64
					},
					success: (data) => {
						this.refresh();
					}
				});
			});
		}
	});
},
javascript
// 在这个页面对应的云函数中引用公共模块
// 也就是上一段代码里的importExcel
'use strict';
const {
	excelTojson
} = require('ml-excel-to-json'); // 引用公共模块的方法
module.exports = {
// 正常部分略过
// 自定义的表头
let sheetList = [{
	index: 0,
	keys: ['key1','key2','...'], // 按顺序对应表格每一列
	keysIndex: 0,
	startIndex: 1,
	endIndex: data.rows ? data.rows : 9
}]

let json = await excelTojson(data.base64, sheetList);
// 正常部分略过

 

最终实现的效果就是,用户点击上传,先弹出输入框让用户输入末尾行号(不输入的话,如果表格里有一些空白,可能会解析错误)

输入后自动调起文件上传,然后解析为base64后交给云函数,

云函数通过公共模块把excel解析为json

你自己写json入库这部分内容的逻辑即可。

留言板

vk-unicloud实现上传excel并解析为json格式

写信给我

交个朋友

  1. Wechat

    yflowerred

    聊会儿
  2. 即刻

    抱走大柠檬

    关注我
  3. Twitter X

    hugLemon

    关注我

友情链接

  1. Free PDF Tools

    免费PDF工具集合

    查看
  2. indie hacker tools

    独立开发者工具集合

    查看
  3. Jasmine Business

    Make your business easier in China.

    查看
  4. 乘风外贸工具导航

    外贸工具导航大全

    查看
  5. inWind乘风出海

    智能外贸生态服务平台

    查看
  6. Charcoal Go

    shisha & BBQ charcoal supplies

    查看
  7. Next.js中文文档

    Next.js中文文档和资源

    查看