如何通过原生端调用JS代码处理文件? 官方
头像 鸿蒙小助手 2026-04-14 16:05:20    发布
7401 浏览 69 点赞 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
头像

鸿蒙小助手

致力于为鸿蒙开发者谋福利

1031

帖子

7

提问

13565

粉丝

关注
最新发布

MCP+Rules:AI辅助鸿蒙应用开发实践

2026-04-17 10:25:25    发布
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255