HarmonyOS鸿蒙Next中有没有办法读取Excel表格中的数据

HarmonyOS鸿蒙Next中有没有办法读取Excel表格中的数据

6 回复

【背景知识】 xlsx插件可以把html中的table元素或者json数据转换成表格后进行导出,也可以解析表格文件,将其转换成json格式的数据,更多可参考SheetJS官方文档

【解决方案】 可以使用SheetJS,在H5页面使用,具体实现步骤如下:

  1. getRawFileContent获取rawfile文件下的excel文件,将其转换为字节数组:
async readExcel(fileName:string) {
  try {
    const resource: Uint8Array = await getContext().resourceManager.getRawFileContent(fileName)
    const uint8Array = new Uint8Array(resource.buffer)
    return Array.from(uint8Array) // 转换为普通数组供JS使用
  } catch (e) {
    console.error(`读取文件失败:${e}`)
    return []
  }
}
  1. registerJavaScriptProxy注入对象:
this.controller.registerJavaScriptProxy(this.testObjtest, 'ExcelBridge', ['readExcel'])
  1. 在H5页面调用HarmonyOS方法,接收传递的字节数组,并调用xlsx库解析:
async function readXlsContent(){
  const byteArray = await ExcelBridge.readExcel('text.xlsx')
  // 转换为Uint8Array
  const u8 = new Uint8Array(byteArray)
  // 使用SheetJS解析
  const workbook = XLSX.read(u8, {type: 'array'})
  // 获取第一个工作表
  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:'男'}]
}
  1. 在应用侧的消息端口上注册回调函数,接收H5侧发送过来的消息,具体可参考:应用与网页互发消息的示例

更多关于HarmonyOS鸿蒙Next中有没有办法读取Excel表格中的数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试试SheetJS库

// 楼主自行集成,假设已引入SheetJS库

import { readFile } from '@sheetjs/sheetjs';

async function readExcel(filePath: string) {

  const fileContent = await fs.readFileSync(filePath); // 使用文件系统模块读取文件

  const workbook = readFile(fileContent);

  const sheet = workbook.Sheets[workbook.SheetNames];

  const data = XLSX.utils.sheet_to_json(sheet); // 转换为JSON数据

  console.log('Excel数据:', data);

}

仅进行预览可以使用Preview Kit(文件预览服务)为应用提供便捷的文件快速预览

参考地址

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/preview-introduction

如果需要进行更多操作可以使用

ohpm install [@archermind](/user/archermind)/exceljs

库地址

[https://ohpm.openharmony.cn/#/cn/detail/@archermind%2Fexceljs](https://ohpm.openharmony.cn/#/cn/detail/@archermind%2Fexceljs)

HarmonyOS Next中可通过ArkTS的FileIO API读取本地Excel文件,但系统未内置Excel解析库。需集成第三方TS/JS解析库(如SheetJS)处理数据。具体步骤:使用FileIO获取文件后,调用解析库提取单元格数据。注意:Next版本暂不支持直接调用Android生态的解析工具。

在HarmonyOS Next中,可以通过集成第三方库(如Apache POI或类似的轻量级库)来读取Excel文件数据。由于HarmonyOS Next基于OpenHarmony生态,目前原生API暂不直接支持Excel操作,但可通过以下方式实现:

  1. 使用Java/Kotlin库:若开发环境支持,可引入Apache POI(需注意HarmonyOS的Java运行时兼容性)。
  2. JS/TS方案:通过OHTS的Native API调用C++库(如LibXL)或使用纯JS解析(仅适用于小文件)。
  3. 数据转换:先将Excel转为CSV或JSON格式,再用文件API读取(推荐跨平台兼容性)。
  4. 云端解析:将文件上传至服务器处理,通过网络接口返回数据。

需注意性能与依赖库的适配问题,建议测试目标设备的兼容性。

回到顶部