前言:这是蛮久之前的一个项目了,当时的需求是app获取手机通讯录并可以进行操作,(我这里只针对安卓开发不考虑ios,不知道是否兼容)我第一想法就是使用插件,但是找了一会发现没有开箱即用的插件,于是只能用HTML5 Plus规范(https://www.html5plus.org/doc/zh_cn/contacts.html)手搓……
HTML5 Plus规范里关于通讯录增删改查api可以支持app端,到目前为止进展顺利,但很快坑就来了,我还有一个需求是支持纯前端excel导入通讯录,我的思路很多,什么xlsjs、lucksheet等等,埋坑ing……
然后我就卡在一个意想不到的环节,解析excel需要先选择获取excel,由于之前通讯录使用了HTML5 Plus,于是我顺手就用了IO模块获取文件的api,结果就是用不了,因为我压根不知道文件路径,也就是说还要有一个获取文件路径的操作,然后我就用官方的uni.chooseFile,官方文档说不支持app端,让开发者去插件市场找,我在插件市场里面不断试错,找到一个能用的插件:https://ext.dcloud.net.cn/plugin?id=14059
直接上代码:
可以看到我使用这个原生插件获取到文件路径了(不要忘了在 "manifest.json -> APP原生插件配置" 内添加本插件,否则云打包(离线打包)不会生效),再配合plus.io的api和xlsx.js操作解析excel,可以看到我使用XLSX.read读取excel的时候也踩了很多坑,最终type: 'base64'成功将excel解析成json格式!!!
最后我再推荐一个好用的tree插件(当时用有一点小毛病,也和作者讨论过,不知道他现在有没有更新,不过自己稍微改一改就能用了):next-tree(超强树选择器、树组件、树插件、无限级联树、单选树、多选树、自定义样式树、树形选择 - DCloud 插件市场,至此踩坑结束。
最后附上效果图以及excel表格格式: