《智能学号抽取系统》V5.9.5 发布:精简代码,修复移动端文件读取核心 Bug
📌 前言
V5.9.3 是一个里程碑版本,它首次实现了从 Web 工具到全平台原生应用的跨越------Windows、macOS、Linux、Android APK,一套代码多端交付。
然而,在实际使用中,我们收到了一个令人困惑的反馈:
"老师,我的安卓手机安装了 APK,能进入文件管理器,也能选 Excel 文件,但选完没反应,名单导不进去......"
这个问题比"选不了文件"更隐蔽------用户能看到文件、能选择文件,但读取失败了。
V5.9.5,就是为了修复这个核心 Bug 而诞生的。
🐛 一、Bug 根源:plus.io.FileReader 与 XLSX 库不兼容
V5.9.3 的文件读取流程
javascript
// 步骤1:使用 plus API 选择文件
plus.io.chooseFile({
onsuccess: function(e) {
var filePath = e.path; // ✅ 能获取路径
readFileWithPlus(filePath, callback);
}
});
// 步骤2:使用 plus.io.FileReader 读取文件
function readFileWithPlus(filePath, callback) {
plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
entry.file(function(file) {
var reader = new plus.io.FileReader(); // ⚠️ 问题所在
reader.onloadend = function(e) {
var arrayBuffer = e.target.result;
callback(arrayBuffer); // ❌ 传给 XLSX 库后解析失败
};
reader.readAsArrayBuffer(file);
});
});
}
问题定位
| 阶段 | 表现 | 状态 |
|---|---|---|
| 打开文件选择器 | 正常弹出 | ✅ |
| 进入文件管理器 | 正常浏览 | ✅ |
| 选择 Excel 文件 | 正常选中 | ✅ |
| plus.io.FileReader 读取 | 能读到数据 | ⚠️ |
| XLSX 库解析 | 解析失败 | ❌ |
根本原因 :plus.io.FileReader 返回的 ArrayBuffer 格式与标准 Web API 不一致,导致 XLSX 库无法正确解析 Excel 文件内容。
用户的实际体验
用户操作:点击导入 → 选择文件 → 选中心仪的 Excel → 确认
系统响应:没有任何反应,名单为空
用户心理:???我选错了吗?再试一次 → 还是不行
最终结论:这个 APP 有问题
这种"能选但无效"的体验,比直接报错更令人困惑。
🔧 二、V5.9.5 的解决方案:回归标准 Web API
核心修复代码
javascript
// V5.9.5 ------ 删除所有 plus.io 相关代码,使用标准 API
function selectExcelFile(callback) {
var input = document.createElement('input');
input.type = 'file';
input.accept = '.xlsx,.xls,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';
input.onchange = function(e) {
var file = e.target.files[0];
if (!file) return;
// 使用标准 FileReader API
var reader = new FileReader();
reader.onload = function(evt) {
var arrayBuffer = evt.target.result;
// 标准格式,XLSX 库完美兼容
if (callback) callback(arrayBuffer);
};
reader.onerror = function() {
// 明确的错误提示
if (callback) callback(null);
};
reader.readAsArrayBuffer(file);
};
input.click();
}
为什么这样能工作?
| 对比项 | V5.9.3 (plus.io) | V5.9.5 (标准 API) |
|---|---|---|
| API 来源 | HBuilderX 私有 API | W3C 标准 Web API |
| ArrayBuffer 格式 | 非标准格式 | 标准格式 ✅ |
| XLSX 库兼容性 | ❌ 不兼容 | ✅ 完美兼容 |
| 代码复杂度 | 高(路径解析+回调嵌套) | 低(15行搞定) |
| 错误提示 | 静默失败 | 可明确捕获 |
修复后的用户体验
用户操作:点击导入 → 选择文件 → 选中心仪的 Excel → 确认
系统响应:✅ "成功导入 40 条新记录"
用户感受:终于能用了!
✨ 三、V5.9.5 的其他改进
3.1 新增拖拽上传功能
css
.upload-area.drag-over {
border-color: var(--primary-color);
background: rgba(67, 97, 238, 0.05);
transform: scale(1.02);
}
电脑端使用时,可直接将 Excel 文件拖入上传区域,操作更便捷。
3.2 修复快速抽取模式的历史记录同步
V5.9.3 的问题:
- 快速抽取停止后,最终显示的学号没有被加入"已抽取列表"
- 导致可以重复抽取同一个学生
V5.9.5 修复:
javascript
// 停止快速抽取时,同步最终结果到已抽取列表
if (currentNumber.value !== '---' && noRepeat.value) {
const finalItem = {
student_id: currentNumber.value,
name: currentStudent.value.name
};
if (!usedList.value.some(u => u.student_id === finalItem.student_id)) {
usedList.value.push(finalItem);
}
}
3.3 代码精简,体积更小
| 对比项 | V5.9.3 | V5.9.5 | 变化 |
|---|---|---|---|
| 总代码行数 | ~1250 行 | ~1150 行 | -100 行 |
| 文件选择模块 | ~60 行 | ~15 行 | -45 行 |
| plus API 兼容代码 | ✅ 存在 | ❌ 移除 | 彻底删除 |
📊 四、版本对比总结
| 功能/特性 | V5.9.3 | V5.9.5 |
|---|---|---|
| 学号范围模式 | ✅ | ✅ |
| 名单导入模式 | ✅ | ✅ |
| 多模态抽取 | ✅ | ✅ |
| 拖拽上传 | ❌ | ✅ |
| 手动粘贴导入 | ✅ | ✅ |
| 暗色模式 | ✅ | ✅ |
| URL 分享 | ✅ | ✅ |
| 移动端选择 Excel 文件 | ✅ 可以选 | ✅ 可以选 |
| 移动端读取解析 Excel | ❌ 解析失败 | ✅ 解析成功 |
| 快速抽取历史同步 | ❌ 有 Bug | ✅ 已修复 |
| 代码体积 | ~1250 行 | ~1150 行(更小) |
💡 五、经验与启示
5.1 私有 API 不可靠
plus.io 是 HBuilderX 提供的私有 API,虽然功能丰富,但:
- 返回的数据格式可能与标准 API 不一致
- 第三方库(如 XLSX)不一定兼容
- 不同版本的行为可能有差异
教训:优先使用标准 Web API,除非私有 API 提供了不可替代的功能。
5.2 "能选"不等于"能用"
V5.9.3 的文件选择器在表象上是成功的:
- ✅ 用户能看到文件管理器
- ✅ 用户能浏览和选择文件
但在深层次上是失败的:
- ❌ 读取的数据无法被解析
- ❌ 没有任何错误提示
教训:错误处理要完善,静默失败是最差的用户体验。
5.3 用户反馈是无价之宝
正是因为用户的真实反馈------"能选文件但导不进去"------我们才定位到这个隐蔽的 Bug。
感谢每一位反馈问题的用户! 🙏
📦 六、下载与使用
方式一:Web 在线版
直接访问部署地址,无需安装,适合临时使用。
方式二:桌面原生应用
- Windows :
.exe安装包 - macOS :
.dmg安装包(🙏 待社区贡献) - Linux :
.AppImage/.deb
方式三:Android APK
下载 智能学号抽取系统.apk,直接安装到手机或平板。
V5.9.5 修复了 APK 内 Excel 文件读取解析失败的问题,现在可以正常导入名单了。
🔮 七、未来计划
| 计划 | 状态 |
|---|---|
| iOS / iPadOS 版本 | 🙏 诚邀社区开发者贡献 |
| 鸿蒙原生版本 | 🚧 开发中 |
| 语音播报 | 📋 规划中 |
| 云端数据同步 | 📋 规划中 |
| 抽取统计看板 | 📋 规划中 |
💬 八、结语
V5.9.5 不是一个"大版本",但它解决了一个"大问题"。
它告诉我们:好的软件不是功能越多越好,而是每个功能都能正常工作。
从 V5.9.3 的"全平台覆盖"到 V5.9.5 的"修复核心痛点",智能学号抽取系统又向前迈进了一小步。
让每一次点名,都成为课堂的高光时刻。
📢 下载地址 :GitHub Releases
📖 技术博客 :CSDN专栏
⭐ 如果这个工具对你有帮助,欢迎 Star、分享!
© 2025 Herryfyh | 智能学号抽取系统 V5.9.5