HarmonyOS鸿蒙NEXT中,是否存在xlsx转json的方法?

HarmonyOS鸿蒙NEXT中,是否存在xlsx转json的方法? 需要实现一个读取xlsx文件再把它转成json,该如何实现?

3 回复

具体解决方案如下:

xlsx是H5的插件,只能在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中,是否存在xlsx转json的方法?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,可以通过@ohos.fileio@ohos.util模块处理xlsx转json。使用fileio读取xlsx文件为二进制数据,然后通过第三方库(如SheetJS的纯ArkTS适配版本)解析为JSON。具体步骤:1. 读取xlsx文件;2. 使用解析库提取数据;3. 转换为JSON格式。官方未内置直接转换API,需依赖社区方案。

在HarmonyOS NEXT中可以通过以下方式实现xlsx转json:

  1. 使用第三方库: 推荐使用SheetJS(xlsx.js)这个成熟的JavaScript库来处理Excel文件。该库支持在HarmonyOS应用中使用,能直接读取xlsx文件并转换为JSON格式。

  2. 基本实现步骤:

  • 将xlsx.js库集成到你的HarmonyOS工程中
  • 使用文件选择器获取xlsx文件
  • 通过FileReader读取文件内容
  • 调用xlsx.js的解析方法转换为JSON
  1. 示例代码片段:
import xlsx from 'xlsx';

// 读取xlsx文件
const file = ... // 通过文件选择器获取的文件对象
const reader = new FileReader();
reader.onload = function(e) {
  const data = new Uint8Array(e.target.result);
  const workbook = xlsx.read(data, {type: 'array'});
  
  // 获取第一个工作表
  const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
  
  // 转换为JSON
  const jsonData = xlsx.utils.sheet_to_json(firstSheet);
  console.log(jsonData);
};
reader.readAsArrayBuffer(file);
  1. 注意事项:
  • 需要处理文件读取权限
  • 大文件可能需要分块处理
  • 转换后的JSON结构取决于Excel表格的格式

这种方法不依赖原生能力,纯JS实现,兼容性较好。

回到顶部