csv格式读取通用类

C++读取CSV表格 看到这个题目可能会有人问什么是CSV表格呢,在我做这个实现之前我也是没有听说过CSV表格,更不知道他有什么用了。CSV是一种Excel表格的导出格式,在Excel表格的菜单栏中点击文件->另存为会弹出一个文件夹浏览窗口,在下拉框中可以选择保存格式,其中有一个就是.CSV(逗号分隔符)选项。 CSV表格的规则: 1 开头是不留空,以行为单位。 2 可含或不含列名,含列名则居文件第一行。 3 阅读详情

需要添加javacsv.jar 支持

import static net.etongbao.common.utils.StringUtils.toStringWithOutNull;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;

/**
 * 解析CSV文件
 * 
 * @author Fu Wei
 * 
 */
public class CsvUtils {
	/** 编码 */
	private static final String ENCODING = "UTF-8";

	private static final Logger LOG = LoggerFactory.getLogger(CsvUtils.class);

	/**
	 * csv格式读
	 * 
	 * @param String
	 * @return List<Map<String, Object>>
	 * @throws CsvException
	 */
	public static List<Map<String, Object>> csvReader(String csvText) {
		List<Map<String, Object>> csvList = new ArrayList<Map<String, Object>>();
		try {
			CsvReader reader = CsvReader.parse(csvText);
			// 考虑到图片大小,设置最大长度不受限制
			reader.setSafetySwitch(false);
			String[] headers = null;
			if (reader.readHeaders()) {
				headers = reader.getHeaders();
				while (reader.readRecord()) {
					Map<String, Object> csvMap = new HashMap<String, Object>();
					for (String head : headers) {
						csvMap.put(head, reader.get(head));
					}
					csvList.add(csvMap);
				}
				LOG.debug("CsvUtils--->csvList:{}", csvList);
				return csvList;
			} else {
				LOG.error("csv读取头失败");
			}
		} catch (UnsupportedEncodingException e) {
			LOG.error("csv读取编码异常");
		} catch (IOException e) {
			LOG.error("csv读取IO异常", e);
		}
		return null;
	}

	/**
	 * csv写
	 * 
	 * @param csvList
	 * @return
	 * @throws CsvException
	 */
	public static String csvWriter(List<Map<String, Object>> csvList) {
		String csvText = null;
		ByteArrayOutputStream stream = new ByteArrayOutputStream();
		CsvWriter writer = new CsvWriter(stream, ',', Charset.forName(ENCODING));
		if (csvList != null && csvList.size() > 0) {
			// 获取第一行map key,
			Map<String, Object> headMap = csvList.get(0);

			if (headMap != null && 0 <= headMap.size()) {
				// 提取cvs列
				Iterator<String> it = headMap.keySet().iterator();
				try {
					while (it.hasNext()) {
						writer.write(it.next());
					}
					writer.endRecord();
					boolean falg = false;
					for (Map<String, Object> csvMap : csvList) {
						if (falg) {
							writer.endRecord();
						}
						for (Entry<String, Object> map : csvMap.entrySet()) {
							String value = toStringWithOutNull(map.getValue());
							writer.write(value);
						}
						falg = true;
					}
					writer.close();
					csvText = stream.toString();
					stream.close();
					return csvText;
				} catch (IOException e) {
					LOG.warn("csv写入IO异常");
				}
			} else {
				LOG.warn("拆解cvs数据为空");
			}
		} else {
			LOG.warn("拆解cvs数据为空");
		}
		return null;
	}

}
 
MagicDraw-需求图 MagicDraw学习笔记 阅读详情

相关推荐

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

[推荐]一款好用的 csv 处理工具

官网:https://www.csvreader.com/  C# 和 VB.Net版本 java 版本:https://sourceforge.net/projects/javacsv/  或直接点此连接下载  https://nchc.dl.sourceforge.net/project/javacsv/JavaCsv/JavaCsv%202.1/javacsv2.1.zip 废话不多说...

Java高手真经 4513

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1243

java csv文件合并_JAVA-文件合并

packagecom.testSplitByNumber;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.nio.charset.Charset;importjava.util.ArrayList;importjava.util...

weixin_36315079的博客 1421

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器

xcode xcodebuild xcrun ios模拟器 iOS UI自动化测试 ios自动打包安装到ios模拟器

z12347891的博客 5074

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

Csv的读取和写入

1、CSV的读取 /* * Java CSV is a stream based library for reading and writing * CSV and other delimited data. * * Copyright (C) Bruce Dunwiddie bruce@csvreader.com * * This library is free software; you can redistribute it and/or * modify it under the

SeanDragon的博客 1251

数据资产入表——解读100页数据资产入表解读与分析【附全文阅读】

本文档《数据资产入表:解读与分析》面向企业财务、数据管理、法务合规及高管等核心岗位,系统解析数据资产入表全流程。以"政策-实操-价值"为主线,首先解读入表政策要求,明确会计处理规范;其次详细拆解数据盘点、治理、确权、评估等实操步骤,提供行业案例参考;最后分析入表难点及后续运营策略,为企业提供从政策理解到落地执行的一站式解决方案。

cdfunlove的博客 392

C#:导入Excel通用类(CSV格式)

一、引用插件LumenWorks.Framework.IO.dll(CsvReader)      插件下载地址:https://pan.baidu.com/s/1X9Sl4bWTNHJOJb_v-KUndA提取密码0az3 二、定义通用接口IExcelData.cs和IDataTransform.cs   IDataTransform.cs pub...

dieximing8933的博客 459

llama2-7b下载并转llama-2-7b-hf

④输入https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py会下载 convert_llama_weights_to_hf.py 文件,我们需要用到这个文件将llama2-7b转成llama-2-7b-hf。③下载完之后是这四个文件,这里我是在windows操作系统中安装的WSL,没有linux操作系统,没办法。

wenling54321的博客 1030

智能车图像处理3-入门级分析2 ---直道冲刺

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 4316

兼容标准的CSV文件读写类

这几天工作要读写CSV文件,CSV格式虽然很简单,为省事想先从网上找一个现成的,但找了半天只有一个看上去可以,至少读写都支持,在此基础上,按照标准修正了一下,标准才是王道。 贴一下CSV格式标准规则,来自百度百科 http://baike.baidu.com/view/468993.htm:   1 开头是不留空,以行为单位。   2 可含或不含列名,含列名则居文件第一行。   3 一行数...

weixin_34337381的博客 128

12027.linux flash驱动之IS25LP01G/IS25WWP01G

一页:512字节 --> 扇区 4096字节 --> 块 32k,64k, 层层递进关系。

写给自己的笔记 2289

csv中包含多余换行符_Java 用注解实现通用功能-csv文件的读取为例

作者:撸撸呀来源:掘金引言使用java注解可以实现一些共通的功能,假设有几种格式的csv文件,编码,分隔符,头部行数之类的定义各不相同,但我们想统一的处理他们,那就需要一个共通的方法。也许有人说,不用注解,只用个共通工具类不就行了吗?但是注解让代码更优雅,而且当你增加其他一些需求,比如其他csv格式的时候,只需要加几个注解就能轻松的扩张你的功能。那么看代码吧。1. 定义注解定义一个csv格式的注解...

weixin_36079936的博客 551

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

读取CSV文件的公共方法

[code="java"] import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.u...

iteye_14360的博客 213

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python网络爬虫(十一)——csv

简介 逗号分隔值(Comma-Separated Values,csv),有时也称为字符分隔值,因为分隔字符也可以不是逗号 逗号分隔值文件以纯文本形式存储表格数据 CSV 文件由任意数目的记录组成,记录间以某种换行符分隔 每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符 通常,所有记录都有完全相同的字段序列 CSV 文件格式的通用标准并不存在,但是在 RFC 4180 中有基础性的描述 使用的字符编码同样没有被指定,但是 bitASCII 是最基本的通用编码 读写文

止步听风的博客 613

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Python】实现对csv格式的数据读取

Csv文本是一种非常常用的单工作表的纯文本数据存储格式,而且存储量要比Excel电子表格大很多,并且被所有计算机平台所使用,经常用于电子表格或数据库软件中。 一、创建csv文件 我们可以通过excel文件“另存为”得到csv文件 但是出现了错误 csv只支持单工作表的数据存储,多个工作表的工作簿,只保存当前活动工作表。 逗号分隔符的使用规范:每个数据必须包含相同的行数,并且每个数据之间相隔的行数必须相同,默认编码格式是:ANSI。 再次打开 用记事本的方式打开csv文件,显示了逗号分隔符的文件

计算机小白努力学习 5487

CSV格式详解,javascript写入读取CSV示例代码

CSV(Comma-Separated Values)是一种常用的数据交换格式,它以纯文本形式存储表格数据。CSV 文件中的每行通常表示一个数据记录,而每个记录由若干字段组成,字段之间使用逗号分隔。

大剑师兰特的GIS世界 4331

Anaconda:读取Excel数据之CSV格式

虽然有各种各样花里胡哨的分析工具,但是对数据存储来说,还是Excel大法好!前天介绍了如何从剪切板进行数据的读取,今天就来介绍一下Excel数据的读取。 #csv\xls\xlsx 有表姐之称的HR小伙伴们应该都知道,Excel的数据有csv\xls\xlsx三种常见的数据格式,这三种格式可能在我们用Excel进行操作的时候看不出来太大的差别,但是如果用Python或者R读取的话,就有区别了。 ...

weixin_44166420的博客 1万+

Android 读取csv格式数据文件

前言 什么是csv文件呢?百度百科上说 CSV是逗号分隔值文件格式,也有说是电子表格的,既然是电子表格,那么就可以用Excel打开,那为什么要在Android中来读取这个.csv格式的文件呢?因为现在主流数据格式是采用的JSON,但是另一种就是.csv格式的数据,这种数据通常由数据库直接提供,进行读取。下面来看看简单的使用吧 正文 首先还是先来创建一个项目,名为ReadCSV 准备.csv格式的文件,点击和风APILocationList 下载ZIP,保存到本地,然后解压,这个时候在你的项目文件中新建

晨曦 6665

CSV格式文件的读取与保存

CSV格式文件的读取与保存 1. 什么是CSV 2. CSV文件的读取 3.CSV文件的保存 1. 什么是CSV "CSV"并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:   1.纯文本,使用某个字符,比如ASCII,Unicode,EBCIC或GB2312(简...

u014490943的博客 2176

tensorflow读取数据之CSV格式

tensorflow要想用起来,首先自己得搞定数据输入。官方文档中介绍了几种,1.一次性从内存中读取数据到矩阵中,直接输入;2.从文件中边读边输入,而且已经给设计好了多线程读写模型;3.把网络或者内存中的数据转化为tensorflow的专用格式tfRecord,存文件后再读取。 其中,从文件中边读边输入,官方文档举例是用的CSV格式文件。我在网上找了一份代码,修改了一下,因为他的比较简略

sunquan_ok的博客 2万+

Java实现读取csv文件

JAVA读取CSV数据

艺博❀ 2万+
上一篇: ActiveMQ JMS生产者消费者模式收发通用类
下一篇: Des算法通用类
VirusFu
博客等级 码龄21年 51粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值