`

csv调研

 
阅读更多
supercsv:下面这个不能用
试用了中文的几个1.5版的代码,都是乱码,这个工程08年的,很久没更新了
对应的jar,SuperCSV-1.52.jar


public class OperateCsv {

	/**
	 * 读取csv文件(不带头部)
	 * 
	 * @param file File
	 * @return csv文件组装成list
	 * @throws IOException
	 */
	public List<String[]> getContentFromFile(File file) throws IOException {
		List<String[]> content = new ArrayList<String[]>();
		;
		CsvListReader reader = new CsvListReader(new FileReader

		(file), CsvPreference.EXCEL_PREFERENCE);
		reader.getCSVHeader(true);// 去除头部字段声明
		List<String> line = new ArrayList<String>();
		while ((line = reader.read()) != null) {
			content.add(line.toArray(new String[] {}));
		}
		return content;
	}

	/**
	 * 读取csv文件(带头部)
	 * 
	 * @param file File
	 * @return csv文件组装成list
	 * @throws IOException
	 */
	public List<String[]> getDetailFromFile(File file) throws IOException {
		List<String[]> content = new ArrayList<String[]>();
		;
		CsvListReader reader = new CsvListReader(new FileReader

		(file), CsvPreference.EXCEL_PREFERENCE);
		String[] header = reader.getCSVHeader(true);
		content.add(header);
		List<String> line = new ArrayList<String>();
		while ((line = reader.read()) != null) {
			content.add(line.toArray(new String[] {}));
		}
		return content;
	}

	/**
	 * 读取csv文件的头部
	 * 
	 * @param file File
	 * @return csv文件的头部
	 * @throws IOException
	 */
	public String[] getHeaderFromFile(File file) throws IOException {
		CsvListReader reader = new CsvListReader(new FileReader

		(file), CsvPreference.EXCEL_PREFERENCE);
		return reader.getCSVHeader(true);
	}

	/**
	 * 写入csv文件
	 * 
	 * @param file File
	 * @param header 头部
	 * @param content 内容
	 * @throws IOException
	 */
	public void writeToCsv(File file, String[] header, List<String[]> content) throws

	IOException {
		CsvListWriter writer = new CsvListWriter(new FileWriter(file),

		CsvPreference.EXCEL_PREFERENCE);
		writer.writeHeader(header);
		for (String[] str : content) {
			writer.write(str);
		}
		writer.close();
	}

	/**
	 * 写入csv文件
	 * 
	 * @param file File
	 * @param content 内容
	 * @throws IOException
	 */
	public void writeContentToCsv(File file, List<String[]> content) throws IOException {
		CsvListWriter writer = new CsvListWriter(new FileWriter(file),

		CsvPreference.EXCEL_PREFERENCE);
		for (String[] str : content) {
			writer.write(str);
		}
		writer.close();
	}

	/**
	 * 写入csv文件(头部)
	 * 
	 * @param file File
	 * @param content 内容
	 * @throws IOException
	 */
	public void writeHeaderToCsv(File file, String[] header) throws IOException {
		CsvListWriter writer = new CsvListWriter(new FileWriter(file),

		CsvPreference.EXCEL_PREFERENCE);
		writer.writeHeader(header);
		writer.close();
	}

	public static void main(String[] args) throws IOException {
		OperateCsv operateCsv = new OperateCsv();
		File file = new File("D://a.csv");
		List<String[]> content = operateCsv.getDetailFromFile(file);
		String[] header = operateCsv.getHeaderFromFile(file);
		for (String[] str : content) {
			for (int i = 0; i < str.length; i++) {

				System.out.println(str[i] + "  " + str[i + 1] + "  " + str[i + 2] + "  " + str[i + 3]);
				i = i + 4;

				// System.out.println(str[i]);

			}
			File file1 = new File("D:/2.csv");
			operateCsv.writeToCsv(file1, header, content);
			operateCsv.writeHeaderToCsv(file1, header);
			operateCsv.writeContentToCsv(file1, content);
		}
	}
}


CsvReader:而且这个居然做c#不做java了,卖钱去了
对应的jar,javacsv.jar
com.csvreader.CsvReader
debug中可以看到有key-value的字段,但是从方法中貌似拿不到
package com.csv.javacsv;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;

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

public class JavaCsvTest {

	public static void main(String[] args) {
		JavaCsvTest test = new JavaCsvTest();
		test.readeCsv();
	}

	public void t1() throws Exception {
		String csvFilePath = "d:/test.csv";
		CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("GBK")); // 一般用这编码读就可以了
	}

	/**
	 * 读取CSV文件
	 */
	public void readeCsv() {
		try {

			ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据
			String csvFilePath = "d:/test.csv";
			CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("GBK")); // 一般用这编码读就可以了

			reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。

			while (reader.readRecord()) { // 逐行读入除表头的数据
				csvList.add(reader.getValues());
			}
			reader.getHeaders();

			reader.close();

			for (int row = 0; row < csvList.size(); row++) {
				for (int column = 0; column < 5; column++) {
					String cell = csvList.get(row)[column]; // 取得第row行第0列的数据
					System.out.println(cell);
				}
			}
		}
		catch (Exception ex) {
			System.out.println(ex);
		}
	}

	/**
	 * 写入CSV文件
	 */
	public void writeCsv() {
		try {

			String csvFilePath = "c:/test.csv";
			CsvWriter wr = new CsvWriter(csvFilePath, ',', Charset.forName("SJIS"));
			String[] contents = { "aaaaa", "bbbbb", "cccccc", "ddddddddd" };
			wr.writeRecord(contents);
			wr.close();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}



opencsv
http://sourceforge.net/projects/opencsv/
http://chengyu2099.iteye.com/blog/1575198


Java CSV Library,
http://sourceforge.net/projects/javacsv/?source=recommended
分享到:
评论
1 楼 idealab 2015-05-17  
博主说的OpenCSV, JavaCSV, SuperCSV都用过,目前在项目中使用uniVocity-parsers,他在性能和扩展性方面都更优一些,并且API简洁灵活。

具体的代码使用,可以参考如下代码:
public static void main(String[] args) throws IOException {
        /**
         * ---------------------------------------------
         *  Read CSV rows into list of beans you defined
         * ---------------------------------------------
         */

        // 1st, config the CSV reader with line separator
        CsvParserSettings settings = new CsvParserSettings();
        settings.getFormat().setLineSeparator("\n");

        // 2nd, config the CSV reader with row processor attaching the bean definition
        BeanListProcessor<Employee> rowProcessor = new BeanListProcessor<Employee>(Employee.class);
        settings.setRowProcessor(rowProcessor);

        // 3rd, creates a CSV parser with the configs
        CsvParser parser = new CsvParser(settings);

        // 4th, parse all rows from the CSF file into the list of beans you defined
        parser.parse(new FileReader("/examples/employees.csv"));
        List<Employee> resolvedBeans = rowProcessor.getBeans();

        // 5th, Store, Delete duplicates, Re-arrange the words in specific order
        // ......

        // 6th, Write the listed of processed employee beans out to a CSV file.
        CsvWriterSettings writerSettings = new CsvWriterSettings();

        // 6.1 Creates a BeanWriterProcessor that handles annotated fields in the Employee class.
        writerSettings.setRowWriterProcessor(new BeanWriterProcessor<Employee>(Employee.class));

        // 6.2 persistent the employee beans to a CSV file.
        CsvWriter writer = new CsvWriter(new FileWriter("/examples/processed_employees.csv"), writerSettings);
        writer.processRecords(resolvedBeans);
        writer.writeRows(new ArrayList<List<Object>>());
    }


上述代码通过简单的几行代码就可以将CSV文件读取为Java Bean列表,推荐使用。

相关推荐

    麦当劳用户市场调研数据集 Mcdonalds(1.4K+ 记录)CSV

    本数据集提供了针对麦当劳消费用户的市场调研信息,可以用于深入了解顾客偏好、评估产品与服务质量、优化价格策略、精确定位营销活动以及响应健康饮食趋势,从而帮助麦当劳制定更加精准的市场策略,提升顾客满意度和...

    上海餐饮数据集 CSV 9W+记录

    这个数据集不仅为学术研究提供了宝贵的资料,也是商业智能、市场调研和政策制定的重要工具。通过有效的数据分析,我们可以洞察餐饮市场的潜在机会,优化运营,提升服务质量,甚至预测未来的行业动态。

    截至2024年2月最畅销手机的数据集 CSV(100+记录)

    在进行数据分析时,可能还需要结合其他数据源,如市场调研报告、用户评论等,以获取更全面的视角。同时,使用机器学习算法,如回归分析或聚类,可以深入挖掘潜在的关联性和规律。总的来说,这个数据集是理解和洞察...

    这段代码是一个爬虫程序,用于爬取链家网站上房屋信息并保存到CSV文件或数据库中 它包括了初始化CSV文件、发送HTTP请求获取数

    使用场景包括但不限于市场调研、房地产数据分析、房屋信息展示等。该程序可以帮助用户快速获取链家网站上的房屋信息,包括房名、封面、市区、地区、详情地址、房型详情、建面、是否具有预售证、每平价格、房屋的装修...

    软件项目需求调研报告模板.docx

    - **文件导入导出**:支持CSV、Excel等格式的数据文件导入导出功能。 - **消息队列**:利用消息队列实现异步通信,提高系统响应速度。 - **第三方服务集成**:集成支付平台、地图服务等第三方服务,增强系统的实用性...

    smallfat#smallfat.github.io#PostDB - IMPORT功能调研1

    title: IMPORT功能调研目的与现状调研结果从CSV文件生成KV格式数据导入语法的格式以及Parser从KV数据生成SST文件将SST文件导入Rocks

    查询速度调研 1

    此外,`mytest`类还包含了`write()`方法,用于将数据写入CSV格式的Excel表格,以及`rondom()`方法,用于生成指定范围内的随机整数。 `mytest`类中有两个抽象方法:`structuer(int n)`和`test()`。`structuer(int n)...

    spock技术调研demo-2

    3. 在Spock的Spec类中,使用`@UseDataSet`注解加载测试数据集,这些数据集可以是CSV或XML格式,位于`src/test/resources`目录下。 4. 在测试方法前使用`@Before`或`@Setup`初始化数据库,如创建表、插入数据等操作。...

    【数据分析】问卷调研-双十一购买物品数据.rar

    在本压缩包“【数据分析】问卷调研-双十一购买物品数据.rar”中,主要包含了一份名为“双十一剁手数据.csv”的文件。这份数据集是针对双十一购物狂欢节期间消费者购买行为的一项问卷调研结果,旨在深入理解消费者的...

    【数据分析】问卷调研-追剧数据.rar

    在本项目中,我们关注的是一个名为"【数据分析】问卷调研-追剧数据.rar"的压缩包文件,其中包含了一份名为"teleplay_data.csv"的数据集。这显然涉及到数据分析领域,特别是针对追剧行为的问卷调研结果。我们将深入...

    2018阿里妈妈广告算法预测调研(更新)1

    《2018阿里妈妈广告算法预测调研更新》 在当今的互联网时代,广告投放的精准性和效果评估已经成为企业营销的重要一环。阿里妈妈作为阿里巴巴集团的广告平台,其广告算法的研发与优化对于提升广告效率至关重要。2018...

    关键词调研工具keyword_researcher_pro

    3. **数据导出与报告**:Keyword Researcher Pro支持将关键词数据导出为CSV或Excel格式,方便进一步分析和分享。同时,它可以生成详细的报告,展示关键词的搜索量、趋势等信息,为团队决策提供直观依据。 4. **安全...

    Solr调研总结共48页.pdf.zip

    - Solr可通过DataImportHandler(DIH)从关系型数据库、CSV、XML等多种数据源导入数据。 - **SolrCloud模式**:与Hadoop生态系统(如HDFS、Spark)紧密集成,支持大数据场景。 5. **性能优化**: - **索引优化**...

    【数据分析】问卷调研-外卖数据.rar

    这些信息可能以表格的形式存储,例如CSV或Excel文件,便于进行统计分析。 在数据预处理阶段,我们需要检查并清洗数据,确保其准确性和完整性。这包括处理缺失值(如用平均值、中位数填充或者直接删除含有缺失值的...

    开源SCA项目调研.pdf

    ### 开源SCA项目调研——Dependency-Check与Dependency-Track #### 一、Dependency-Check概览 **Dependency-Check** 是OWASP(Open Web Application Security Project)组织下的一个开源工具,专门用于识别项目...

    2022年美赛赛题A-F(含数据)

    1. **题目A**:基于BCHAIN-MKPRU.csv和LBMA-GOLD.csv的数据,可能涉及的是金融市场分析。这可能需要参赛者运用统计学知识进行时间序列分析,了解区块链技术和黄金价格的关联性,以及市场趋势预测。 2. **题目B**:...

    表格纵向合并汇总-千万级大数据批量excel表格合并汇总

    技术栈: 基于python开发 多线程快速执行 特色功能: 支持千万量级数据合并 ...无论是市场调研数据、金融交易记录,还是科研实验结果,一键表格合并助手都能够从容应对。 在文件格式支持方面,也有极强的兼容性!

    爬虫开发教程、案例及项目

    - 实际应用中,网络爬虫可以帮助收集大量公开数据,支持数据分析、市场调研等多种场景。 - 学习并掌握爬虫开发技能对于从事数据分析、数据科学等领域的工作具有重要意义。 综上所述,本文详细介绍了网络爬虫的基本...

Global site tag (gtag.js) - Google Analytics