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

devtools/2024/11/25 1:23:03/

csv_0">【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.ppmy.cn/devtools/136705.html

相关文章

【初阶数据结构篇】队列的实现(赋源码)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

Vue3 el-table 默认选中 传入的数组

一、效果&#xff1a; 二、官网是VUE2 现更改为Vue3写法 <template><el-table:data"tableData"border striperow-key"id"ref"tableRef":cell-style"{ text-align: center }":header-cell-style"{background: #b7babd…

Vue前端进阶面试题目(二)

虛拟 DOM 的解析过程是怎样的? 虚拟DOM&#xff08;Virtual DOM&#xff09;是Vue等现代前端框架为了提高页面渲染性能而采用的一种技术。其解析过程大致如下&#xff1a; 创建虚拟DOM树&#xff1a;当应用的状态发生变化时&#xff0c;会生成一个新的虚拟DOM树&#xff0c;…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

基于Java Springboot高校门诊管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

Oracle 到 Elasticsearch 数据迁移同步

简述 Elasticsearch 是一个分布式的实时搜索与数据分析引擎&#xff0c;具有强大的可扩展性和高度的灵活性。CloudCanal 对于 Elasticsearch 的支持经过了多轮迭代&#xff0c;支持版本从 6.x 和 7.x 一路扩展到 8.x&#xff0c;并适配了其丰富多样的 API。 同时 CloudCanal …

第五章 使用数据字典和动态性能视图

数据字典 任务目标&#xff1a; 识别内置数据库对象识别数据字典的内容和用途描述如何创建数据字典视图识别数据字典视图类别查询数据字典和动态性能视图描述管理脚本命名约定 数据库创建的对象 表&#xff08;Tables&#xff09;&#xff1a;表是数据库中存储数据的基本结构…

数据结构 (5)栈

一、基本概念 栈是一种运算受限的线性表&#xff0c;它只允许在表的一端进行插入和删除操作&#xff0c;这一端被称为栈顶&#xff08;Top&#xff09;&#xff0c;而另一端则被称为栈底&#xff08;Bottom&#xff09;。栈的插入操作被称为入栈&#xff08;Push&#xff09;&a…