更新记录

1.0(2023-09-27)

v1.0 2023/09/26

  • v1.0版本

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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

插件方法

  1. 读取数据
  • 方法名readExcelAsync

  • 说明

    sheet配置会影响数据的读取,startCol和startRow指定数据的起始列和行(包括表头),headerRowNum指定表头有几行。

  • 参数:ReadOption

读取数据参数:ReadOption

名称 类型 说明
path string 文件完整路径
xlsx boolean 是否是xlsx格式
readAllSheet boolean 是否读取所有sheet,如果false则只读sheet参数配置的页
sheet Array<ReadSheetOption> 返回数据,没有返回则是null

读取数据Sheet配置:ReadSheetOption

名称 类型 说明
sheetIndex number sheet索引,从0开始
startRow number 数据起始行,从0开始
startCol number 数据起始列,从0开始
headerRowNum number 表头行数,如果没表头就写0,一行表头就写1,以此类推
  • 结果:ExcelModel

Excel表数据:ExcelModel

名称 类型 说明
path string 当前读取excel的路径
name string 当前读取excel的文件名
sheets Array<SheetModel> Excel表sheet数据

Excel表Sheet数据:SheetModel

名称 类型 说明
sheetNo number sheet索引
sheetName string sheet名称
rows Array<RowModel> 行数据

Excel表行数据:RowModel

名称 类型 说明
rowIndex number 所在行
cells Array<CellModel> 单元格数据

Excel表行内单元格数据:CellModel

名称 类型 说明
isHeader boolean 是否是表头,根据读取时的配置判断的
cellValue string 单元格数据
rowIndex number 单元格所在行
colIndex number 单元格所在列
  1. 分批读取
  • 方法名batchReadExcelAsync

  • 说明表格较多时一次性读取会比较慢,且容易出错,建议进行分批读取;分批读取时会持续接收数据直至读取完毕,但只支持读取指定的sheet页

  • 参数:BatchReadOption

BatchReadOption

名称 类型 说明
path string 读取文件完整路径
xlsx boolean 是否xlsx格式
pageSize number 每次读取数据量
sheetIndex number 读取指定sheet
startRow number 起始行
startCol number 起始列
headerRowNum number 表头行数,如果没表头就写0,一行表头就写1,以此类推
  • 结果:BatchReadResultModel

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}行`);
        }
});
  1. 写入数据
  • 方法名writeExcelAsync

  • 说明一次性写入全部数据

  • 参数:WriteOption

WriteOption

名称 类型 说明
dir string 文件保存的目录
fileName string 保存的文件名称
xlsx boolean 是否xlsx格式
sheets Array<WriteSheetModel> 保存的文件名称

WriteSheetModel

名称 类型 说明
sheetName string sheet页名称,不指定默认sheet1,sheet2...
merges Array<WriteCellMergeModel> 合并单元格设置
columnWidth object 设置列宽,详细设置看后面说明
freeze FreezeModel 设置冻结
rows Array<WriteRowModel> 保存的文件名称

WriteCellMergeModel

名称 类型 说明
mergeFromRowIndex number 合并起始行
mergeFromColIndex number 合并起始列
mergeToRowIndex number 合并结束行
mergeToColIndex number 合并结束列

FreezeModel

名称 类型 说明
freezeRow number 冻结行,从1开始。比如冻结首行,则为1
freezeColumn number 冻结列,0代表全部列。

冻结至首行:freezeRow:1,freezeColumn:0;冻结首行首列:freezeRow:1,freezeColumn:1;

WriteRowModel

名称 类型 说明
height number 行高
headerRow boolean 是否是表头行
cells Array<WriteCellModel> 行内单元格数据

WriteCellModel

名称 类型 说明
value string/number/boolean 单元格数据
valueType string 单元格值的类型,只支持string,number,boolean,image,formula
cellStyle WriteCellStyle 单元格样式
image InsertImageModel 如果单元格内是图片,此参数必须设置;如果不是,可以为null

WriteCellStyle

名称 类型 说明
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 下边框颜色

具体样式说明看后面

InsertImageModel

名称 类型 说明
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
}
  1. 追加数据
  • 方法名appendExcelAsync

  • 说明数据较多时,一次性写入会很慢,而且容易导致内存不足报错,所以建议分批追加写入数据。

  • 参数:AppendModel

AppendModel

名称 类型 说明
dir string 文件存储目录
fileName string 文件名
xlsx boolean 是否是xlsx格式
sheetIndex number 要写入的sheet索引
sheet WriteSheetModel 写入sheet的数据
  • 结果
{
    code: 200,
    message: "",
    success: true,
    data: null
}
  1. 插入图片
  • 方法名insertImageAsync

  • 说明在表格指定位置插入图片

  • 参数:InsertImageOption

InsertImageOption

名称 类型 说明
dir string 文件存储目录
fileName string 文件名
xlsx boolean 是否是xlsx格式
sheetImages Array<InsertImageSheetModel> 写入sheet的数据

InsertImageSheetModel

名称 类型 说明
sheetIndex number sheet表索引
images Array<InsertImageModel> 图片数据
  • 结果
{
    code: 200,
    message: "",
    success: true,
    data: null
}

关于列宽设置的算法说明

  • 列宽不要超过255个字符,即不要超过255*256

  • 实际列宽可能由于字体大小不同导致和预期设置的列宽有一点偏差

  • 由于POI内部列宽算法是将每个字符宽度都除以了256,所以在设置宽度时需要乘上256

  • 由于安卓上缺少必要的库文件,所以暂不支持自适应列宽。有需求的话可以通过算法自己实现 示例:

    const columnWidth = {
    0: 18 * 256, // 第一列列宽18个字符
    2: 25 * 256 // 第3列25个字符
    }

    关于单元格样式的说明

  • 关于颜色,所有需要设置颜色,均从下面列表中选取即可,注意参数应为英文字符串。 125babc817a0c8fa42b2b3c27ca1b9b8.png ac38e7c13f63a3322063c732017e3d34.png de490bcc1c6b7724ecd9cce218c934e2.png

  • 关于边框,边框可选值,图片中的英文单词即为对应的值(对应参数borderTop,borderLeft,borderRight,borderBottom)

cc229aed886b9c9e4a6d979a47d815f7.png

  • 关于填充模式,填充模式用来控制背景色的填充方式

d6b6790d0506bc04fb6c1864c3429c4b.png 7a80bbad11be635abe8a467ccfa7b277.png

  • 关于对齐方式枚举
  1. 水平对齐方式(对应参数align)
枚举 说明
left 左对齐
right 右对齐
center 居中
distributed 分散对齐
cs 水平常规对齐
fill 水平填充
justify 两端对齐
  1. 垂直对齐方式(对应参数verticalAlign)
枚举 说明
bottom 底部对齐
top 顶部对齐
center 居中
distributed 分散对齐

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.READ_EXTERNAL_STORAGE,android.permission.WRITE_EXTERNAL_STORAGE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问