1. 项目背景与需求解析
作为一名电子工程师,我经常需要处理大量测试数据图片。比如在测试一款DC-DC电源模块时,需要记录不同输入电压(VIN)和负载电流(IOUT)条件下的输出特性,每个测试点都要拍摄示波器波形或万用表示数照片。这些图片通常命名为"VIN18V_IOUT1A.jpg"、"VIN24V_IOUT2A.jpg"等形式,数量一多就会面临管理难题:
- 文件浏览器中图片堆叠,难以快速定位特定测试条件
- 需要手动建立Excel对照表,工作量大且易出错
- 跨设备协作时,文件路径变化导致链接失效
传统的手工整理方式效率低下,特别是当测试点超过20个时,光是建立超链接就要花费半小时。而使用WPS内置的JSA(JavaScript for Applications)脚本,可以实现:
- 自动扫描指定文件夹内的测试图片
- 智能提取文件名中的关键参数
- 生成带超链接的数据目录表
- 支持后续扩展数据分析功能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能实现详解
2.1 文件遍历与过滤机制
JSA通过Dir函数实现文件遍历,其工作逻辑类似DOS命令:
javascript复制function listImageFiles() {
// 注意路径中的双反斜杠是JavaScript中的转义要求
const testDataPath = 'C:\\TestData\\202405_PSU\\';
let currentFile = Dir(testDataPath + "*.jpg");
while (currentFile !== "") {
Console.log("发现测试文件:" + currentFile);
currentFile = Dir(); // 继续获取下一个文件
}
}
关键细节:首次调用Dir必须带路径参数,后续调用不带参数即可继续遍历。这与Windows API的设计逻辑一致。
实际应用中需要添加文件类型过滤。电子测试常见的图片格式包括:
- .jpg(示波器截图)
- .png(测试软件导出)
- .bmp(老旧设备输出)
建议使用通配符组合:
javascript复制let currentFile = Dir(path + "*.jp*g"); // 匹配.jpg和.jpeg
2.2 超链接构建技巧
通过录制宏获取的超链接生成代码往往不够灵活,需要手动优化:
javascript复制// 基础版(录制宏直接生成)
Range("A1").Select();
Selection.Hyperlinks.Add(Selection, "TestData\\image1.jpg", "", "", "显示文本");
// 优化版(动态构建)
function createHyperlink(cell, filePath, displayText) {
const absPath = PathCombine(ActiveWorkbook.Path, filePath);
cell.Hyperlinks.Add(cell, absPath, "", "", displayText || filePath);
}
避坑指南:WPS的超链接默认使用相对路径,建议转换为绝对路径避免移动文件后失效。PathCombine函数可以正确处理不同操作系统下的路
