在进行自动化脚本开发时,Excel 文件处理是数据采集、信息存储、批量操作、结果导出等场景的核心能力。可直接在移动端完成创建、读写、修改、删除等全流程操作,完美适配自动化任务中的数据持久化需求。本文结合官方文档规范,系统讲解Excel 文件处理的核心 API、语法规则、实战技巧,并提供可直接运行的完整 Demo 源码。
一、JS 环境与 Excel 基础认知
Excel 文件处理是冰狐智能辅助自动化脚本的核心能力之一,平台内置Excel类,封装创建、打开、增删改查、关闭等全量操作,生成文件为.xls格式,默认存储在手机aznfz文件夹,支持自定义路径,API 均为同步执行,逻辑清晰、易于调试,完全适配移动端自动化场景,无需电脑辅助即可完成数据处理。
二、Excel 核心 API 详解
冰狐 Excel 操作基于Excel构造函数展开,所有 API 均为实例方法,参数规范、返回值明确,无复杂回调,以下为核心 API 完整说明:
1. 构造函数:创建 Excel 实例
javascript
var excel = new Excel();
- 功能:初始化 Excel 操作对象,无参数,无返回值,是所有 Excel 操作的起点,必须优先执行。
- 注意:一个实例对应一个文件操作,多文件操作需创建多个实例,避免资源冲突。
2. create:创建 Excel 文件
javascript
var ret = excel.create(fileName, colTitle[, path]);
- 功能:新建
.xls文件,自动添加列标题,文件不存在则创建,已存在则覆盖,返回boolean表示执行结果。 - 参数说明:
fileName:字符串,必填,文件名无需加后缀 ,系统自动补全.xls;colTitle:数组,必填,列标题数组,定义表格列结构;path:字符串,选填,文件存储路径,默认空值指向手机aznfz文件夹,支持自定义绝对路径。
- 示例:
javascript
// 创建data.xls,列标题为姓名、年龄、性别
var excel = new Excel();
var createRet = excel.create('data', ['姓名', '年龄', '性别']);
console.log('文件创建结果:' + createRet);
3. open:打开已有 Excel 文件
javascript
var ret = excel.open(fileName[, path]);
- 功能:打开已存在的
.xls文件,返回boolean表示打开结果,打开后可执行读写、修改操作。 - 参数说明:
fileName:字符串,必填,文件名无需加后缀;path:字符串,选填,文件路径,默认aznfz文件夹。
- 注意:仅能打开平台创建的
.xls文件,不支持第三方 Excel 文件,避免格式兼容问题。
4. addRow:写入一行数据
javascript
var ret = excel.addRow(data[, row]);
- 功能:向文件写入一行数据,返回
boolean表示执行结果。 - 参数说明:
data:数组,必填,数据数组,长度必须与列标题一致;row:整数,选填,目标行号,默认-1表示追加到文件末尾。
- 示例:
javascript
// 向第2行写入数据
excel.addRow(['张三', 25, '男'], 2);
// 末尾追加数据
excel.addRow(['李四', 23, '女']);
5. append:末尾追加数据(立即写入)
javascript
var ret = excel.append(data);
- 功能:向文件末尾追加一行数据,调用后立即写入磁盘 ,无需等待关闭,返回
boolean表示结果。 - 参数说明:
data为数组,必填,长度与列数一致,适合实时数据存储场景。 - 优势:相比
addRow,append实时落盘,避免脚本异常中断导致数据丢失,稳定性更高。
6. read:读取文件数据
javascript
var data = excel.read([row]);
- 功能:读取文件数据,返回数组类型结果,必须在
open后执行。 - 参数说明:
row为整数,选填,指定行号,不填则返回所有数据(二维数组)。 - 示例:
javascript
// 读取所有数据
var allData = excel.read();
console.log('全部数据:' + JSON.stringify(allData));
// 读取第3行数据
var rowData = excel.read(3);
console.log('第3行数据:' + rowData);
7. removeRow:删除指定行
javascript
var ret = excel.removeRow(row);
- 功能:删除指定行数据,返回
boolean表示结果。 - 参数说明:
row为整数,必填,目标行号,行号从 1 开始计数。
8. removeColumn:删除指定列
javascript
var ret = excel.removeColumn(column);
- 功能:删除指定列数据,返回
boolean表示结果。 - 参数说明:
column为整数,必填,目标列号,列号从 1 开始计数。
9. rows/columns:获取行列数
javascript
var rowCount = excel.rows(); // 获取总行数
var colCount = excel.columns(); // 获取总列数
- 功能:分别返回文件的行数、列数,整数类型,用于遍历、数据校验等场景。
10. close:关闭文件
javascript
excel.close();
- 功能:关闭文件,释放资源,必须执行,避免文件占用、数据未写入等问题。
- 注意:无论操作成功与否,最终都需调用
close,养成规范编码习惯。
三、Excel 操作核心规范(必看)
- 语法严格遵循平台 JS 规则 :变量用
var声明,禁止未声明使用;流程控制语句必须加{};不支持===/!==,仅用==/!=;支持模板字符串、函数默认参数、import导入脚本。 - 文件格式唯一 :仅支持
.xls,文件名不加后缀,路径默认aznfz文件夹。 - 数据格式匹配 :
addRow/append的data数组长度必须与列标题一致,否则写入失败。 - 生命周期完整 :
创建/打开 → 读写修改 → 关闭,缺一不可,防止数据丢失。 - 异常处理 :通过返回值判断执行结果,搭配
if语句做容错处理,提升脚本稳定性。 - 线程安全 :回调函数与
main函数不同线程,通过__global全局变量传递 Excel 操作状态,避免多线程冲突。
四、完整实战 Demo 源码(可直接运行)
本 Demo 实现Excel 文件创建、批量写入、数据读取、行删除、列统计、结果导出全流程。
javascript
// 冰狐智能辅助Excel自动化处理Demo
// 功能:创建人员信息表,批量写入数据,读取统计,删除无效数据,输出结果
function main() {
// 1. 初始化Excel实例
var excel = new Excel();
console.log('===== 开始Excel操作 =====');
// 2. 定义文件配置
var fileName = 'person_info'; // 文件名,无后缀
var colTitle = ['姓名', '年龄', '性别', '部门', '月薪']; // 列标题
var dataList = [ // 待写入数据
['张三', 26, '男', '技术部', 8000],
['李四', 24, '女', '产品部', 7500],
['王五', 28, '男', '运营部', 9000],
['赵六', 25, '女', '技术部', 8500],
['钱七', 30, '男', '市场部', 10000]
];
// 3. 创建Excel文件
var createRet = excel.create(fileName, colTitle);
if (createRet) {
console.log('文件创建成功:' + fileName + '.xls');
} else {
console.log('文件创建失败');
excel.close(); // 失败仍需关闭
return;
}
// 4. 批量写入数据
var writeSuccess = 0;
for (var i = 0; i < dataList.length; i++) {
var rowRet = excel.addRow(dataList[i]);
if (rowRet) {
writeSuccess++;
}
console.log('写入第' + (i + 1) + '行结果:' + rowRet);
}
console.log('批量写入完成,成功行数:' + writeSuccess);
// 5. 追加实时数据
var appendRet = excel.append(['孙八', 27, '女', '人事部', 7000]);
console.log('末尾追加数据结果:' + appendRet);
// 6. 读取所有数据并统计
var allData = excel.read();
console.log('===== 表格全部数据 =====');
console.log(JSON.stringify(allData));
var rowCount = excel.rows();
var colCount = excel.columns();
console.log('表格总行数:' + rowCount + ',总列数:' + colCount);
// 7. 统计技术部人数
var techCount = 0;
for (var j = 1; j < allData.length; j++) { // 跳过标题行
if (allData[j][3] == '技术部') {
techCount++;
}
}
console.log('技术部总人数:' + techCount);
// 8. 删除无效行(删除第5行数据)
var delRet = excel.removeRow(5);
console.log('删除第5行结果:' + delRet);
// 9. 读取删除后数据
var newData = excel.read();
console.log('===== 删除后数据 =====');
console.log(JSON.stringify(newData));
// 10. 关闭文件,释放资源
excel.close();
console.log('===== Excel操作完成,文件已关闭 =====');
}
Demo 执行流程说明
- 初始化
Excel实例,定义文件名、列标题、批量数据; - 创建文件并校验结果,失败直接退出,保证流程可控;
- 循环写入 5 行数据,统计成功行数,支持批量数据导入;
- 末尾追加 1 行实时数据,适配动态数据存储场景;
- 读取全部数据,输出二维数组,统计行列数与部门人数;
- 删除指定无效行,验证删除功能,读取修改后数据;
- 关闭文件,完成完整生命周期,确保数据安全。
五、自动化任务中的 Excel 应用拓展
1. 配合系统回调实现数据自动记录
冰狐支持cbNotification(通知回调)、cbWindowChange(窗口切换回调)等系统事件,可结合 Excel 自动记录通知信息、页面操作日志。
javascript
// 全局变量,跨线程传递数据
var __global excelData = [];
function main() {
var excel = new Excel();
excel.create('notification_log', ['时间', '包名', '内容']);
excel.close();
}
// 通知回调,自动记录消息到Excel
function cbNotification(textList, className, packageName) {
var excel = new Excel();
excel.open('notification_log');
excel.append([new Date().toLocaleString(), packageName, textList.join('|')]);
excel.close();
}
2. 多脚本协作 Excel 数据共享
通过import导入脚本,结合callScript调用,实现多脚本共用 Excel 数据,适合模块化大型自动化任务。
javascript
// 主脚本
import 'data_util.js'; // 导入数据处理脚本
function main() {
var excel = new Excel();
excel.create('share_data', ['ID', '内容']);
excel.addRow(['1', '主脚本数据']);
excel.close();
callScript('data_util.js'); // 调用子脚本处理数据
}
3. 数据校验与清洗
结合rows/columns获取行列数,遍历数据做格式校验、空值过滤、重复数据删除,适配数据采集后的清洗场景。
六、常见问题与解决方案
- 文件创建失败 :检查文件名是否含特殊字符、路径是否合法、存储权限是否开启,默认
aznfz文件夹无需手动创建。 - 数据写入失败 :核对
data数组长度与列标题是否一致,禁止数据类型不匹配,平台支持数字、字符串混合写入。 - 读取数据为空 :确认文件已正确打开,行号是否超出范围,读取前必须执行
open。 - 文件占用无法操作 :未执行
close导致,确保每次操作后调用关闭方法,异常时也需执行。 - 多线程数据错乱 :回调函数与
main不同线程,用__global全局变量传递状态,避免多实例同时操作同一文件。
七、总结
Excel API 遵循创建 / 打开→读写修改→关闭的生命周期,本文提供的 Demo 源码覆盖全场景操作,可直接复用改造,适配数据采集、信息管理、任务统计、结果导出等各类自动化需求。无论是新手入门还是进阶开发,掌握Excel 处理能力,都能大幅提升自动化脚本的数据处理效率,实现更强大、更实用的自动化任务。