上一篇写的是导出单个excel,但是导出多个sheet 试了很多方法,没有成功,算了吧,那还是搞个原生的插件,一劳永逸,ok,下面介绍一下这么具体使用。

开源地址:https://gitee.com/codeceo_net/uniapp-excel-export-plugin

aar 包下载目录:uniapp-excel-export-plugin/build/outputs/aar/export_excel-release.aar,如果二开可以拉源码,如果有什么问题,请发布issues

接下来看看uniapp配置,先看目录结构如下:

package.json配置:

{
    "name": "ExportExcelSdkPlugin",
    "id": "ExcelSdkPlugin",
    "version": "1.0.0",
    "description": "excel导出",
    "_dp_type":"nativeplugin",
    "_dp_nativeplugin":{
        "android": {
            "plugins": [
                {
                    "type": "module",
                    "name": "ExcelSdkPlugin",
                    "class": "com.routon.plsy.reader.sdk.export_excel.SdkInitModule"
                }
            ],
            "hooksClass": "com.routon.plsy.reader.sdk.export_excel.Sdk_AppProxy",
            "integrateType":"aar",
            "permissions":[],
            "dependencies":[
                "org.apache.poi:poi:5.2.3",
                "org.apache.poi:poi-ooxml:5.2.3",
                "org.apache.commons:commons-collections4:4.4"
            ],
            "useAndroidX":true
        }
    }
}

本插件需要android的sdk版本,manifest.json 配置即可:


"minSdkVersion" : 26,
 "targetSdkVersion" : 33

插件初始化,位置随意,看你心情:


// #ifdef APP-PLUS
const ExcelSdkPlugin = uni.requireNativePlugin('ExcelSdkPlugin');
//读写权限
ExcelSdkPlugin && ExcelSdkPlugin.requestPermission();
//#endif

插件调用具体调用:


let result = {
    path:"保存目录,可选如果不填写,保存目录位置是应用下的file/xlsx/中,结果会返回,可以查看跟踪"
    fileName:"haha.xlsx",
    sheetNames:["sheet1","sheet2"],
    //这里多个sheet 的头部
    headers:[
    ["姓名","年龄","性别"], 
    ["姓名","年龄","性别"]
    ],
    datas:[
        //这里多个sheet 的数据
        //sheet1的
        [
            ["sheet1-xiaobai0","12","男"],["sheet1-xiaobai2","11","男"],
        ],
        //sheet2的
        [
            ["sheet2-2xiaobai3","19","男"],["sheet2-2xiaobai4","19","男"]
        ],
    ]
 }
 ExcelSdkPlugin.generateExcel(result, res=>{
    console.log("返回啦!==========="+res)
    //{status:200,message:'消息',data:'保存地址'}
    //200成功,0失败
    //这里是string需要转换
    let  resJSON = JSON.parse(res)
    uni.showToast({
        title: res+"嘎嘎嘎",
        duration: 2000,
        icon:'none'
    });
});

ok,结束,下面去创建自定义基座,然后运行。这里不说具体操作了,请查看其它文档

效果:

这里用了uni自带 uni.docment 函数,自动打开wps(设备已安装)

ok,就到这里了,如果有其他需求,可以更新该插件功能!