如何通过原生端调用JS代码处理文件?
官方
鸿蒙小助手 2026-04-14 16:05:20 发布8262 浏览 101 点赞 3 收藏
本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。
更多与该问题相关的讨论,请点击原帖查看:
原生端调用JS代码或者原生端传一个文件给Web端,Web使用JS代码处理文件的相关问题-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题描述:
如何通过原生端调用JS代码处理文件?
解决方案:
【背景知识】
xlsx插件可以把html中的table元素或者json数据转换成表格后进行导出,也可以解析表格文件,将其转换成json格式的数据,更多可参考官方文档。
【解决方案】
xlsx是H5的插件,只能在H5页面使用,具体实现步骤如下:
1.getRawFileContent获取rawfile文件下的excel文件,将其转换为base64:
async readExcel(fileName:string) {
try {
const resource: Uint8Array = await getContext().resourceManager.getRawFileContent(fileName)
const uint8Array = new Uint8Array(resource.buffer)
let base64Helper = new util.Base64Helper();
let base64 = base64Helper.encodeToStringSync(uint8Array, util.Type.MIME);
return base64
} catch (e) {
console.error(`读取文件失败:${e}`)
return []
}
}2.registerJavaScriptProxy注入对象:
this.controller.registerJavaScriptProxy(this.testObjtest, 'ExcelBridge', ['readExcel'])3.在H5页面调用HarmonyOS方法,接收传递的base64,并调用xlsx库解析:
async function readXlsContent(){
const b64 = await ExcelBridge.readExcel('text.xlsx')
// 使用SheetJS解析
const workbook = XLSX.read(b64, {type: 'base64'})
// 获取第一个工作表
const sheet = workbook.Sheets[workbook.SheetNames[0]]
// 使用xlsx的utils.sheet_to_json等方法将工作表转换为JSON
const outdata = XLSX.utils.sheet_to_json(sheet)
console.log('outdata------:',outdata) // [{name:'张三',gender:'男'},{name:'李四',gender:'男'}]
}4.在应用侧的消息端口上注册回调函数,接收H5侧发送过来的消息,具体可参考:应用与网页互发消息的示例。
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
标签
H5
xlsx库
html
相关推荐
运维态高效处理应用冻屏
鸿蒙小助手
87
0HarmonyOS错误边界处理:全局错误拦截与优雅降级
鸽芷咕
4070
0HarmonyOS文件下载管理器实战:断点续传与多任务并发下载
鸽芷咕
2562
0HarmonyOS APP<<古今职鉴定>>开源教程第22篇:图片处理与资源管理
leson
2958
0HarmonyOS代码质量:代码规范与重构实战
张妍希
1455
0
鸿蒙小助手
致力于为鸿蒙开发者谋福利
1099
帖子
8
提问
13572
粉丝
最新发布
运维态高效处理应用冻屏
2026-07-08 16:26:40 发布【划重点】2026年HarmonyOS应用市场应用上架审核高频问题速通攻略
2026-07-06 18:52:46 发布热门推荐
京公网安备:11010502051901号