更新记录
1.0(2023-09-27)
v1.0 2023/09/26
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:4.4 - 11.0 |
armeabi-v7a:支持,arm64-v8a:支持,x86:支持 |
× |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
淏阳Excel插件文档
示例均为伪代码,可能无法正确运行,请按照文档适当调整。
如有不清楚的地方可以导入示例项目。
有任何问题请加QQ:419830883 沟通解决。
使用方法
const excelPlugin = uni.requireNativePlugin("Haoyang-ExcelPlugin");
excelPlugin.readExcelAsync({
path: "",
xlsx: true
},res=>{
console.log(res);
})
基础响应对象:ResultModel
所有的方法返回对象均为此结构,具体数据从data属性获取
名称 |
类型 |
说明 |
code |
number |
200:成功,其它:失败 |
success |
boolean |
true:成功,false:失败 |
message |
string |
响应信息 |
data |
object |
返回数据,没有返回则是null |
插件方法
- 读取数据
-
方法名
:readExcelAsync
-
说明
sheet配置会影响数据的读取,startCol和startRow指定数据的起始列和行(包括表头),headerRowNum指定表头有几行。
-
参数
:ReadOption
读取数据参数:ReadOption
名称 |
类型 |
说明 |
path |
string |
文件完整路径 |
xlsx |
boolean |
是否是xlsx格式 |
readAllSheet |
boolean |
是否读取所有sheet,如果false则只读sheet参数配置的页 |
sheet |
Array<ReadSheetOption> |
返回数据,没有返回则是null |
名称 |
类型 |
说明 |
sheetIndex |
number |
sheet索引,从0开始 |
startRow |
number |
数据起始行,从0开始 |
startCol |
number |
数据起始列,从0开始 |
headerRowNum |
number |
表头行数,如果没表头就写0,一行表头就写1,以此类推 |
Excel表数据:ExcelModel
名称 |
类型 |
说明 |
path |
string |
当前读取excel的路径 |
name |
string |
当前读取excel的文件名 |
sheets |
Array<SheetModel> |
Excel表sheet数据 |
名称 |
类型 |
说明 |
sheetNo |
number |
sheet索引 |
sheetName |
string |
sheet名称 |
rows |
Array<RowModel> |
行数据 |
名称 |
类型 |
说明 |
isHeader |
boolean |
是否是表头,根据读取时的配置判断的 |
cellValue |
string |
单元格数据 |
rowIndex |
number |
单元格所在行 |
colIndex |
number |
单元格所在列 |
- 分批读取
BatchReadOption
名称 |
类型 |
说明 |
path |
string |
读取文件完整路径 |
xlsx |
boolean |
是否xlsx格式 |
pageSize |
number |
每次读取数据量 |
sheetIndex |
number |
读取指定sheet |
startRow |
number |
起始行 |
startCol |
number |
起始列 |
headerRowNum |
number |
表头行数,如果没表头就写0,一行表头就写1,以此类推 |
BatchReadResultModel
名称 |
类型 |
说明 |
total |
number |
总行数 |
complete |
boolean |
是否读取完毕 |
rows |
Array<RowModel> |
每次读取数据量 |
let totalRows = [];
excelPlugin.batchReadExcelAsync(option, data => {
const { total, rows, complete } = data;
totalRows = totalRows.concat(rows);
if (complete === true) {
console.log(`已完成,共${total}行`);
} else {
console.log(`读取中,共${total}行,已读取${allData.length}行`);
}
});
- 写入数据
-
方法名
:writeExcelAsync
-
说明
:一次性写入全部数据
-
参数
:WriteOption
WriteOption
名称 |
类型 |
说明 |
dir |
string |
文件保存的目录 |
fileName |
string |
保存的文件名称 |
xlsx |
boolean |
是否xlsx格式 |
sheets |
Array<WriteSheetModel> |
保存的文件名称 |
名称 |
类型 |
说明 |
mergeFromRowIndex |
number |
合并起始行 |
mergeFromColIndex |
number |
合并起始列 |
mergeToRowIndex |
number |
合并结束行 |
mergeToColIndex |
number |
合并结束列 |
名称 |
类型 |
说明 |
freezeRow |
number |
冻结行,从1开始。比如冻结首行,则为1 |
freezeColumn |
number |
冻结列,0代表全部列。 |
冻结至首行:freezeRow:1,freezeColumn:0;冻结首行首列:freezeRow:1,freezeColumn:1;
名称 |
类型 |
说明 |
value |
string/number/boolean |
单元格数据 |
valueType |
string |
单元格值的类型,只支持string,number,boolean,image,formula |
cellStyle |
WriteCellStyle |
单元格样式 |
image |
InsertImageModel |
如果单元格内是图片,此参数必须设置;如果不是,可以为null |
名称 |
类型 |
说明 |
bgColor |
string |
背景色 |
color |
string |
文字颜色 |
fontSize |
number |
字体大小 |
fontName |
string |
字体 |
align |
string |
水平对齐方式 |
verticalAlign |
string |
垂直对齐方式 |
bolder |
string |
是否加粗 |
fillPattern |
string |
填充模式 |
borderTop |
string |
上边框 |
borderTopColor |
string |
上边框颜色 |
borderLeft |
string |
左边框 |
borderLeftColor |
string |
左边框颜色 |
borderRight |
string |
右边框 |
borderRightColor |
string |
右边框颜色 |
borderBottom |
string |
下边框 |
borderBottomColor |
string |
下边框颜色 |
具体样式说明看后面
名称 |
类型 |
说明 |
marginLeft |
number |
图片在单元格内左边距 |
marginTop |
number |
图片在单元格内上边距 |
marginRight |
number |
图片在单元格内右边距 |
marginBottom |
number |
图片在单元格内下边距 |
leftTopCol |
number |
图片左上角所在列 |
leftTopRow |
number |
图片左上角所在行 |
rightBottomCol |
number |
图片右下角所在列 |
rightBottomRow |
number |
图片右下角所在行 |
imageBytes |
Array |
图片byte数组,imageBytes、imagePath、imageUrl任选一个传参即可 |
imagePath |
string |
图片本地路径,imageBytes、imagePath、imageUrl任选一个传参即可 |
imageUrl |
string |
图片网络url地址,imageBytes、imagePath、imageUrl任选一个传参即可 |
imageType |
string |
图片类型,png,jpg,jpeg |
{
code: 200,
message: "",
success: true,
data: null
}
- 追加数据
AppendModel
名称 |
类型 |
说明 |
dir |
string |
文件存储目录 |
fileName |
string |
文件名 |
xlsx |
boolean |
是否是xlsx格式 |
sheetIndex |
number |
要写入的sheet索引 |
sheet |
WriteSheetModel |
写入sheet的数据 |
{
code: 200,
message: "",
success: true,
data: null
}
- 插入图片
-
方法名
:insertImageAsync
-
说明
:在表格指定位置插入图片
-
参数
:InsertImageOption
InsertImageOption
InsertImageSheetModel
{
code: 200,
message: "",
success: true,
data: null
}
-
列宽不要超过255个字符,即不要超过255*256
-
实际列宽可能由于字体大小不同导致和预期设置的列宽有一点偏差
-
由于POI内部列宽算法是将每个字符宽度都除以了256,所以在设置宽度时需要乘上256
-
由于安卓上缺少必要的库文件,所以暂不支持自适应列宽。有需求的话可以通过算法自己实现
示例:
const columnWidth = {
0: 18 * 256, // 第一列列宽18个字符
2: 25 * 256 // 第3列25个字符
}
-
关于颜色,所有需要设置颜色,均从下面列表中选取即可,注意参数应为英文字符串。
-
关于边框,边框可选值,图片中的英文单词即为对应的值(对应参数borderTop,borderLeft,borderRight,borderBottom)
- 水平对齐方式(对应参数align)
枚举 |
说明 |
left |
左对齐 |
right |
右对齐 |
center |
居中 |
distributed |
分散对齐 |
cs |
水平常规对齐 |
fill |
水平填充 |
justify |
两端对齐 |
- 垂直对齐方式(对应参数verticalAlign)
枚举 |
说明 |
bottom |
底部对齐 |
top |
顶部对齐 |
center |
居中 |
distributed |
分散对齐 |