当前位置: 首页 > news >正文

【HarmonyOS】鸿蒙应用加载读取csv文件

【HarmonyOS】鸿蒙应用加载读取csv文件

一、问题背景:

1. csv文件是什么?
csv是一种文本文件格式,与json类似。会存储一些文本内容,应用需要读取该文件,进行UI内容得填充等。
文件中的数据是以纯文本形式存储的,并且数据行和字段之间通过特定的分隔符(通常是逗号)分隔。
2. CSV 文件示例

xx.csv
姓名,年龄,城市
张三,28,北京
李四,34,上海
王五,22,广州数据结构:
export default class TestObj{name: string = "";age: string = "";city: string = "";
}

在上面得示例中:

第一行是表头,定义了三个字段:姓名、年龄和城市。
接下来的三行是数据记录,每行包含一条记录。
字段之间用逗号分隔。

二、解决方案:

1. 方式一:
使用三方提供得SDK进行csv文件得解析:
“@ohos/opencsv”: “2.0.0”

import { getPath, openSync,CSVReaderBuilder,CSVParser } from '@ohos/opencsv';
getPath().then((path) => {let rd = openSync (path,'test.csv'/* csv filename */,0o2)let readerBuilder: CSVReaderBuilder = new CSVReaderBuilder(rd)let readerbuildcsv = readerBuilder.withCSVParser(new CSVParser()).buildCSVReader()let lines: Array<Array<string>> = null;lines = readerbuildcsv.readAll() // Read all data in the CSV file.console.log(lines)/* [*  [1,'Zhang San',18]*  [2,'Li Si',19]*  [3,'Wang Wu', 20]*  [4,'Zhao Liu', 21]*               ]*/readerbuildcsv.close () // Close reading.
})

2. 方式二:

  private parseCsvToStrings(csvString: string, delimiter = ','): Array<TestObj> {const lines = csvString.trim().split('\n');const headers = lines[0].split(delimiter);// 将object替换为你的目标对象类型const data: Array<TestObj> = new Array();for (let i = 1; i < lines.length; i++) {const values = lines[i].split(delimiter);const row: TestObj = new TestObj();headers.forEach((header, index) => {let res: string = values[index]?.trim()?.toString() || '';switch (header.trim()){case "name":row.name = res;break;case "age":row.name = res;break;case "city":row.name = res;break;}});data.push(row);}return data;}

注意:
对于大型CSV文件,手动解析可能会比较慢,而使用优化的第三方库可能会更快。

http://www.lryc.cn/news/489316.html

相关文章:

  • Java retainAll() 详解
  • Redis的基本数据类型
  • 通过vite+vue3+pinia从0到1搭建一个uniapp应用
  • Linux的桌面
  • Easyexcel(5-自定义列宽)
  • 操作系统实验 C++实现死锁检测算法
  • 小鹏汽车智慧材料数据库系统项目总成数据同步
  • 1、HCIP之RSTP协议与STP相关安全配置
  • Linux云服务器docker使用教程
  • 如何从android的webview 取得页面上的数据
  • VTK知识学习(12)- 读取PNG图像
  • Springboot项目搭建(3)-更改用户信息与文件上传
  • Docker1:认识docker、在Linux中安装docker
  • python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析
  • android 如何获取当前 Activity 的类名和包名
  • Spring Boot 项目 myblog 整理
  • uniapp 城市选择插件
  • 测试工程师如何在面试中脱颖而出
  • Mesh路由组网
  • LeetCode131:分割回文串
  • 详细解析 devmem 命令:在 Linux 系统中直接访问内存的利器
  • [Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
  • 【前端知识】nodejs项目配置package.json深入解读
  • XGBOOST算法Python实现(保姆级)
  • JDK、MAVEN与IDEA的安装与配置
  • 输出比较简介
  • 什么是反向 DNS 查找以及它的作用是什么?
  • 集群聊天服务器(13)redis环境安装和发布订阅命令
  • [ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
  • Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装