HarmonyOS鸿蒙Next开发,如何导入excel中的表格内容展示到app中,有第三方库吗?
HarmonyOS鸿蒙Next开发,如何导入excel中的表格内容展示到app中,有第三方库吗?
可以试试第三方库 [@archermind/exceljs](https://ohpm.openharmony.cn/#/cn/detail/@archermind%2Fexceljs)
ohpm install [@archermind](/user/archermind)/exceljs
// read from a file
const workbook = new Excel.Workbook();
await workbook.xlsx.readFile(filename);
// ... use workbook
更多关于HarmonyOS鸿蒙Next开发,如何导入excel中的表格内容展示到app中,有第三方库吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
第一种通过JavaScript生态中的SheetJS库实现Excel文件解析,这种用于灵活处理数据的场景:
安装:
ohpm install sheetjs
解析Excel文件,将解析后的jsonData传递给表格组件渲染:
import { read, utils } from 'sheetjs';
// 读取文件为ArrayBuffer
const fileBuffer = ...; // 通过文件系统获取Excel文件二进制数据
const workbook = read(fileBuffer, { type: 'array' });
const firstSheetName = workbook.SheetNames;
const worksheet = workbook.Sheets[firstSheetName];
const jsonData = utils.sheet_to_json(worksheet); // 转换为JSON数据
第二中也可使用鸿蒙社区提供的三方库:
WuyoTable组件:为鸿蒙设计的高效表格渲染组件
ohpm install @wuyo/wuyotable
import { WuyoTable } from "@wuyo/wuyotable";
// 将解析后的数据传入组件
WuyoTable({ data: jsonData, columns: [...] })
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
【背景知识】 xlsx插件可以把html中的table元素或者json数据转换成表格后进行导出,也可以解析表格文件,将其转换成json格式的数据,更多可参考SheetJS官方文档。
【解决方案】 可以使用SheetJS,在H5页面使用,具体实现步骤如下:
- 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 []
}
}
- registerJavaScriptProxy注入对象:
this.controller.registerJavaScriptProxy(this.testObjtest, 'ExcelBridge', ['readExcel'])
- 在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:'男'}]
}
- 在应用侧的消息端口上注册回调函数,接收H5侧发送过来的消息,具体可参考:应用与网页互发消息的示例。
很喜欢HarmonyOS的卡片式设计,信息一目了然,操作也更便捷。
可以尝试 @archermind/exceljs
ohpm install [@archermind](/user/archermind)/exceljs
在HarmonyOS NEXT开发中导入表格至应用内 利用 SheetJS(xlsx.js)这个纯 JavaScript 库,在 ArkTS 工程中直接解析 Excel
之前尝试过方案 web组件+JS库+本地HTML内容替换可以实现你所说的效果
在HarmonyOS Next开发中,可以使用ohos-axios
或ohos-okhttp
进行网络请求获取Excel文件,通过ohos-fileio
读取文件内容。推荐使用SheetJS
的社区适配版本解析Excel数据,该库支持xls/xlsx格式。解析后可将数据绑定至List或Table组件进行展示。注意需确认第三方库对HarmonyOS Next的兼容性。
在HarmonyOS Next开发中,可以通过以下方式实现Excel表格内容的导入与展示:
-
使用开源库:推荐使用Apache POI的Java版本(如poi-ooxml)处理Excel文件,但需注意鸿蒙对Java库的兼容性。可尝试通过HarmonyOS的Java API或NDK集成相关功能。
-
数据解析与转换:读取Excel文件后,解析数据并转换为JSON或自定义对象,再通过ListContainer或TableLayout等UI组件动态渲染表格内容。
-
文件操作:通过HarmonyOS的文件管理API(如@ohos.fileio)获取用户选择的Excel文件,支持本地存储或用户授权访问。
-
替代方案:若第三方库兼容性问题较多,可考虑将Excel转换为CSV格式,使用纯文本解析方式简化处理。
注意:目前HarmonyOS生态的第三方库较少,建议优先使用系统原生能力或适配开源解决方案。