更新记录
1.0.0(2024-12-23)
v1.0.0 首发
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.31,Android:6.0,iOS:不支持,HarmonyNext:不支持 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
bsx-saveas-api 文件或数据另存为 UTS API插件
重要
UTS API插件,暂仅支持Android 端!! 如果另存为文件需要保存到外部目录的话,需要配置权限清单!!! 参考官方权限清单配置!
官方开发文档
作者
aoaobaba 傲傲爸爸~
介绍
为了回应群友的需要,将json数据导出为excel文件,而开始做这个API插件;首发版本,暂时完成将JSON字符串导出为csv格式,Excel一样能打开。其他格式,例如xls\xlsx等,实际上也能做,因时间问题暂且放着。另外,此API也考虑后续导出为pdf 等功能,有时间再做!
新手上路!大佬们,手下留情!
v1.0.0功能
- [X] 单JSON数组导出为csv
- [X] 自定义表头导出为csv (单JSON对象提供定义表头)
- [X] 暂只支持一维表格 (即一张表,表头json对象和数据json数组)
- [X] 多个存储位置提供指定(files目录、documents目录、downloads目录。外部存储 需要权限!!!)
- [X] 自定义文件夹(如果不存在则自动创建)
- [X] 非法字符检测(文件名或文件夹)
- [X] 内置动态权限申请(如果启用,前提要配置权限清单)
19:24:55.173 CSV导出成功--------- /storage/emulated/0/Download/testSaveas/testSaveasFile.csv
19:24:55.223 [BsxSaveasApiResult] {filePath: "/storage/emulated/0/Download/testSaveas/testSaveasFile.csv", message: "另存为成功.", status: "succeed"} at pages/bsx-saveas-api/bsx-saveas-api.uvue:57
19:24:55.223 Shared----------------------------success at pages/bsx-saveas-api/bsx-saveas-api.uvue:68
19:24:55.256 [BsxSaveasApiResult] {filePath: "/storage/emulated/0/Download/testSaveas/testSaveasFile.csv", message: "另存为成功.", status: "succeed"} at pages/bsx-saveas-api/bsx-saveas-api.uvue:87
类型
bsxSaveasStorageType 存储位置
DOCUMENT\DOWNLOAD 时需要外部存储写权限!!!
enum bsxSaveasStorageType {
FILES = "FILES",
DOCUMENT = "DOCUMENT",
DOWNLOAD = "DOWNLOAD"
}
bsxSaveasFileSuffix 文件后缀
enum bsxSaveasFileSuffix {
CSV = ".csv"
}
BsxSaveasExcelOptions 导出为Excel操作类型
type BsxSaveasExcelOptions = {
storageType ?: bsxSaveasStorageType
fileSuffix ?: bsxSaveasFileSuffix
dynamicReqPermission: boolean
dirName : string
fileName : string
dataJson : string
headerJson : string
success ?: (res : BsxSaveasApiResult) => void
fail ?: (res : BsxSaveasApiFail) => void
complete ?: (res : any) => void
}
BsxSaveasApiResult 同步API操作结果
type BsxSaveasApiResult = {
status : string // failed or succeed
filePath : string,
message : string
}
bsxSaveasExcelApi 另存为Excel csv格式API
function (options : BsxSaveasExcelOptions)
使用
- 导入插件到项目
-
uvue页面模板中导入相关类型和API
// 导入api import { bsxSaveasStorageType, bsxSaveasFileSuffix, BsxSaveasExcelOptions, BsxSaveasApiResult, bsxSaveasExcelApi } from '@/uni_modules/bsx-saveas-api'
- 需要的地方调用
-
需要注意,如果你想得到一个有序的(按源json key顺序生成的表格)需要手动添加对象。不要直接定义字面量,否则 导出表格会乱序哦~
const saveasExcel = () => { let headerjson:UTSJSONObject = {} headerjson["班级"] = '自定义字段一' headerjson["年龄"] = '自定义字段二' headerjson["成绩"] = '自定义字段三' let datajson : UTSJSONObject[] = [] let row:UTSJSONObject = {} row["班级"] = '三年五班' row["年龄"] = 6 row["成绩"] = 90 datajson.add(row) console.log(JSON.stringify(datajson)) let options = { storageType: bsxSaveasStorageType.DOWNLOAD, // 文件存储位置 fileSuffix: bsxSaveasFileSuffix.CSV, // v1.0.0 暂只支持excel csv格式 dynamicReqPermission: false, // 是否动态权限处理 如果存储位置在应用外部存储时 需要权限 这里代码可动态申请权限 dirName: 'testSaveas', // 自定义文件夹 fileName: 'testSaveasFile', // 文件名称 dataJson: JSON.stringify(datajson), // 需要导出的json数据 headerJson: JSON.stringify(headerjson), // 定义的json 表头 success: (res : BsxSaveasApiResult) => { console.log(res) // 成功时 }, fail: (res : any) => { console.log(res) // 失败时 }, complete: (res : any) => { console.log(res) // 完成时 }, } as BsxSaveasExcelOptions bsxSaveasExcelApi(options) }
权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
tips
- 重要!!!!! 如果另存文件位置在外部存储目录,需要配置权限清单。
- 引入查询相关类型后,界面会有代码提示可选录入
谢谢!