【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文件,手动解析可能会比较慢,而使用优化的第三方库可能会更快。
相关文章:
【HarmonyOS】鸿蒙应用加载读取csv文件
【HarmonyOS】鸿蒙应用加载读取csv文件 一、问题背景: 1. csv文件是什么? csv是一种文本文件格式,与json类似。会存储一些文本内容,应用需要读取该文件,进行UI内容得填充等。 文件中的数据是以纯文本形式存储的&…...
Java retainAll() 详解
在 Java 中,retainAll() 是 Collection 接口(List、Set 等集合类实现该接口)的一种方法,用于保留集合中与指定集合交集的元素,删除其他所有元素。 以下是对 retainAll() 方法的详细讲解。 1. 方法定义 方法签名 boo…...
Redis的基本数据类型
初识Redis缓存 Redis缓存: 实际开发中经常使用Redis作为缓存数据库,从而提高数据存取效率,减轻后端数据库的压力。 可以将经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到MyS…...
通过vite+vue3+pinia从0到1搭建一个uniapp应用
最近项目上要做一个app,选择了用uniapp作为开发框架;我大概看了一下uniapp的文档,根据文档从0到1搭了一个uniapp应用供大家参考。 因为本人习惯使用了WebStorm编译器,但是uniapp官方推荐使用HBuilder搭建,如果和我一样…...
Linux的桌面
Linux的桌面是可以卸载的 的确,Linux并不像Windows,Linux本身是一个基于命令行的操作系统,在内核眼中,桌面只不过是个普通的应用程序,所以,在Linux的桌面中可以完成的事情,命令行中也基本可以完…...
Easyexcel(5-自定义列宽)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…...
操作系统实验 C++实现死锁检测算法
实验目的 模拟实现死锁检测算法 实验内容 1、 输入: “资源分配表”文件,每一行包含资源编号、进程编号两项(均用整数表示,并用空格分隔开),记录资源分配给了哪个进程。 “进程等待表”文件&…...
小鹏汽车智慧材料数据库系统项目总成数据同步
1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构: 这几个表总数为100多万,经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图: 界面: SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…...
1、HCIP之RSTP协议与STP相关安全配置
目录 RSTP—快速生成树协议 STP STP的缺点: STP的选举(Listening状态中): RSTP P/A(提议/同意)机制 同步机制: 边缘端口的配置: RSTP的端口角色划分: ensp模拟…...
Linux云服务器docker使用教程
诸神缄默不语-个人CSDN博文目录 我用的是腾讯云服务器,操作系统是OpenCloudOS 9,基本上可以当特色版CentOS用。 docker安装跟各个系统关系太大了,我就不写了。OpenCloudOS 9安装docker见这篇博文:腾讯云服务器使用教程 文章目录 …...
如何从android的webview 取得页面上的数据
要从Android的WebView中获取页面上的数据,通常有几种常见的方法: JavaScript Interface:通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法,反之亦然。 Evaluate JavaScriptÿ…...
VTK知识学习(12)- 读取PNG图像
1、代码 private void ShowPngImage(){vtkPNGReader pngReader vtkPNGReader.New();pngReader.SetFileName("D:\\图像\\boxes\\cardboard_boxes_01.png");pngReader.Update();vtkImageActor imageActor vtkImageActor.New();imageActor.SetInputData(pngReader.Get…...
Springboot项目搭建(3)-更改用户信息与文件上传
1.概要 前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。 这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等... 而后接触到了本地上传和云上传,其二者区别: 选择本地上传还是云上…...
Docker1:认识docker、在Linux中安装docker
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析
目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …...
android 如何获取当前 Activity 的类名和包名
其一:getClass().getSimpleName() public static String getTopActivity(Context context){ ActivityManager am (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); ComponentName cn am.getRunningTasks(1).get(0).topAct…...
Spring Boot 项目 myblog 整理
myblog 项目是一个典型的 Spring Boot 项目,主要包括用户注册、登录、文章管理(创建、查询、更新、删除)等功能。 1. 项目结构与依赖设置 项目初始化与依赖 使用 Spring Initializr 创建项目。引入必要的依赖包: Spring Boot W…...
uniapp 城市选择插件
uniapp城市选择插件 如上图 地址 完整demo <template><view><city-selectcityClick"cityClick":formatName"formatName":activeCity"activeCity":hotCity"hotCity":obtainCitys"obtainCitys":isSearch&quo…...
测试工程师如何在面试中脱颖而出
目录 1.平时工作中是怎么去测的? 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测? 4.你为什么能够做测试这一行?(根据个人情况分析理解) 5.你认为测试的目的是什么? 6.软件测试的流程ÿ…...
Mesh路由组网
Mesh无线网格网络,多跳(multi-hop)网络,为解决全屋覆盖信号,一般用于家庭网络和小型企业 原理 网关路由器(主路由,连接光猫),Mesh路由器(子路由,…...
Zephyr GPIO API 深度解析:从设备树到代码
GPIO 是嵌入式开发中最基础、最频繁打交道的外设。点灯、读按键、控制继电器、触发中断……几乎每一个项目都是从 GPIO 开始的。理解 Zephyr 的 GPIO API 设计,也就理解了 Zephyr 驱动模型的核心哲学:用设备树描述"接在哪",用统一 …...
CyberChef:网络安全工程师的终极数据处理瑞士军刀
CyberChef:网络安全工程师的终极数据处理瑞士军刀 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef 你是否曾遇到…...
抖音批量下载完整指南:3步实现无水印视频高效获取
抖音批量下载完整指南:3步实现无水印视频高效获取 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...
免费一键去图片水印的app有哪些?2026年免费去水印app推荐与测评
在社交媒体时代,我们经常会遇到需要去除图片水印的情况——无论是处理自己的作品,还是优化电商产品图,亦或是整理素材库。但去水印听起来复杂,实际上现在已经有很多免费工具可以一键搞定。本文为你盘点2026年最实用的去水印解决方…...
如何利用 AI Agent 优化日常办公自动化流程?
用 AI Agent 优化办公自动化,核心是把高频重复、规则清晰、跨系统搬运的工作交给 Agent,人专注决策与创意;先试点、再打通数据、最后规模化,通常能把事务性时间压减 50%–80%。下面从落地框架、核心场景、搭建步骤、工具选型与避坑…...
创业团队如何利用Taotoken的Token Plan有效控制AI应用开发成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用Taotoken的Token Plan有效控制AI应用开发成本 对于资源有限的创业团队和独立开发者而言,在项目初期将…...
PyTorch新手必看:RuntimeError: mat1 and mat2 shapes cannot be multiplied 的三种常见场景与快速排查法
PyTorch矩阵维度冲突实战指南:从报错原理到精准修复 当你满怀期待地按下运行键,等待模型开始训练时,突然跳出的RuntimeError: mat1 and mat2 shapes cannot be multiplied就像一盆冷水浇下来。这个在PyTorch中频繁出现的矩阵乘法维度错误&am…...
书匠策AI到底有多懂毕业生?一个论文小白的“开挂“实录,看完你也想试!
嗨,各位正在为毕业论文头秃的宝子们!👋 我是你们的论文科普搭子,今天不讲枯燥的写作技巧,直接给大家安利一个我最近发现的"宝藏神器"——书匠策AI( 官网直达:www.shujiangce.com&…...
小爱音箱音乐播放限制破解实战:从基础配置到高级玩法深度解析
小爱音箱音乐播放限制破解实战:从基础配置到高级玩法深度解析 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否曾经对着小爱音箱说"播放周杰伦…...
JLink版本不兼容?手把手教你解决APM32F003F6P6在Keil V5.14下的烧写闪退与报错
JLink与Keil版本冲突全解析:APM32F003F6P6烧写难题终极指南 当你深夜加班调试APM32F003F6P6,Keil突然弹出"Error Flash Download failed"然后闪退,JLink软件在你选择芯片型号后直接消失——这种工具链版本冲突带来的"玄学&quo…...
