需要添加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;
}
}
分享到:
相关推荐
LumenWorks公司开发的`LumenWorks.Framework.IO.dll`是一个知名的C# CSV读取库,它提供了强大的功能,使得开发者可以快速而高效地处理CSV文件。这个DLL包含了各种类和方法,帮助开发者轻松实现以下功能: 1. **快速...
CSV格式因其简单、通用而被广泛用于数据交换,尤其是当数据需要在不同的应用程序之间共享时。 标题提到的“delphi7 stringgrid保存数据为csv格式”涉及到以下几个关键步骤: 1. **遍历StringGrid**:首先,我们...
//C# 读取Excel文件、C#读取xls文件、C#读取xlsx文件、C#读取csv文件 //C# 将xls文件转换为DataTable、C#将xlsx文件转换为DataTable //C#将csv文件转换为DataTable //C#将txt文件转换为DataTable(列与列之间空格隔...
CSV文件因其简洁性和通用性,常被用作数据交换格式,特别是在导入和导出表格数据时。 在C#中,我们通常使用`System.IO`命名空间中的类来处理文件流。读取CSV文件时,我们可以使用`FileStream`类打开文件,然后配合`...
这个类提供了基础的CSV读取功能,但实际应用中可能需要考虑更多细节,比如错误处理、编码兼容性、大小写敏感的分隔符匹配等。此外,还可以扩展这个类,支持写入CSV文件,或者添加更高级的功能,如支持引用行和列的...
在IT领域,数据处理是一项至关重要的任务,而Excel和CSV文件由于其易用性和通用性,经常被用作数据交换的格式。在这个“excel/csv数据读取”的主题中,我们将探讨如何在Visual Studio 2010环境下读取这两种文件类型...
在Java编程环境中,CSV(Comma Separated Values)文件是一种常见的数据存储格式,通常用于导入导出数据到数据库、电子表格或分析工具。CSV文件以其简单性和通用性而受到广泛欢迎。本篇将深入探讨如何在Java中读取...
在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据存储格式,因其简单、通用和易于处理的特性而受到青睐。这个程序专注于CSV文件的读取和写入操作,这是数据分析、数据存储和数据交换的基础技能。...
在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据存储格式,因其简洁、通用和易于处理的特性而受到青睐。MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序...
CSV(Comma-Separated Values,逗号分隔值)格式是一种通用的文件格式,用于以纯文本形式存储表格数据,如数字和文本。CSV文件由任意数量的记录组成,记录间以换行符分隔,每个记录由字段组成,字段之间以逗号分隔。...
CSV格式则是更为通用的数据交换格式,它的每个数据项由逗号分隔,便于在不同程序之间导入和导出数据。CSV文件通常更轻量级,易于读取和处理,但不包含属性的类型信息,所有数据被视为字符串处理,因此在处理时可能...
在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据交换格式,因其简单、通用而备受青睐。本文将深入探讨如何读取和创建CSV文件,并特别关注自动解析文件编码方式这一关键环节。我们将使用Java语言...
XLSX是Excel 2007及更高版本使用的默认文件格式,而CSV是一种通用的数据交换格式,被广泛用于数据分析和导入其他应用程序。 标题"xlsx格式转csv格式的实例"指出我们的目标是学习如何执行这个转换。Python提供了许多...
CSV文件以其简洁、通用的格式被广泛用于存储表格数据,例如数据库导出、电子表格或者统计报告。本文档将详细讲解如何在Visual Studio 2013环境下使用C++语言读取CSV文件,并通过动态分配数组来存储读取到的数据。 ...
CSV是一种通用的文件格式,用于存储表格数据,如电子表格或数据库。在MNIST的CSV文件中,每一行可能代表一个样本,列则包含图像的像素值和对应的标签。例如,对于28x28的图像,会有784列(28x28=784)表示像素强度,...
CSV文件因其简洁、通用的格式而被广泛使用。本篇将详细介绍如何在Java中有效地读取CSV文件,以及如何避免在导入Excel时可能出现的单元格取值问题。 首先,理解CSV文件的结构至关重要。CSV文件是以逗号分隔的纯文本...
之前项目中需要做导入功能,开始使用的excel但是支持大数据量时有内存溢出问题,后来使用了Csv格式进行导入,百度了一下Csv格式读取,前几页居然没有一个能用的,研究了两天,在网上的代码进行了修改,目前可以支持...
CSV文件是一种通用的文本文件格式,用于存储表格数据,而EXCEL文件是一种常用的电子表格文件格式。C#语言提供了多种方法来读取CSV和EXCEL文件,本文将对其中的一些方法进行介绍。 一、使用OleDbConnection读取CSV...
CSV(Comma Separated Values)是一种通用的、轻量级的数据存储格式,它使用逗号分隔值来组织数据。然而,当CSV文件包含中文字符时,可能会遇到显示乱码的问题。解决这个问题涉及到字符编码的理解和正确设置。以下是...
在这个过程中,使用CSV作为输出格式是因为CSV(Comma-Separated Values)是通用的数据交换格式,易于被其他软件和编程语言如Python、R或Excel读取。这种数据组织方式使得气象数据的分析更加高效和便捷。 总结来说,...