《智能学号抽取系统》V5.9.5 发布:精简代码,修复移动端文件读取核心 Bug


《智能学号抽取系统》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

相关推荐
人工智能研究所6 小时前
Claude + HyperFrames:用 HTML 方式制作视频,AI 时代一切皆可 HTML?
人工智能·html·音视频·ai 视频·hyperframes·claude-
qq_452396238 小时前
【工程实战】第八篇:报告美学 —— Allure 深度定制:让 Bug 定位精准到秒
开发语言·python·bug
广师大-Wzx11 小时前
JavaWeb:前端部分
java·前端·javascript·css·vue.js·前端框架·html
keyipatience12 小时前
3.Linux基本指令2
前端·html
iReachers13 小时前
HTML打包EXE工具数据加密功能详解 - 加密保护HTML/JS/CSS资源
javascript·css·html·html加密·html转exe·html一键打包exe·exe打包
前端老石人14 小时前
前端网站换肤功能的 3 种实现方案
开发语言·前端·css·html
yivifu1 天前
手搓HTML双行夹批效果
前端·html·html双行夹注
钮钴禄·爱因斯晨1 天前
他到底喜欢我吗?赛博塔罗Java+前端实现,一键解答!
java·开发语言·前端·javascript·css·html
Beingchou1 天前
HTML头部元信息避坑指南大纲
前端·html