代码中采用的是GBK编码;
如果用UTF-8编码的话,用office打开会出现中文乱码,用UTF-8编码格式读取出来的数据也是正常的;但是用记事本打开就是正常;
代码如下:附带jar包和源文件
package com.willson.web.test.javacsv;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
public class JavaCsv {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
final String[] header = new String[] { "name", "sex", "age" };
final String[][] data = new String[][] { header, { "Lucy", "女", "22" },
{ "Tom", "男", "25" }, { "Lily", "女", "19" } };
writerCsv("测试.csv", header, data);
readerCsv("测试.csv");
}
/**
* 读取csv
*
* @param csvFilePath
* @throws Exception
*/
public static void readerCsv(String csvFilePath) throws Exception {
CsvReader reader = new CsvReader(csvFilePath, ',', Charset
.forName("GBK"));// shift_jis日语字体
reader.readHeaders();
String[] headers = reader.getHeaders();
List<Object[]> list = new ArrayList<Object[]>();
while (reader.readRecord()) {
list.add(reader.getValues());
}
Object[][] datas = new String[list.size()][];
for (int i = 0; i < list.size(); i++) {
datas[i] = list.get(i);
}
/*
* 以下输出
*/
for (int i = 0; i < headers.length; i++) {
System.out.print(headers[i] + "\t");
}
System.out.println("");
for (int i = 0; i < datas.length; i++) {
Object[] data = datas[i]; // 取出一组数据
for (int j = 0; j < data.length; j++) {
Object cell = data[j];
System.out.print(cell + "\t");
}
System.out.println("");
}
}
/**
* 写入csv
*
* @param csvFilePath文件名路径
* +文件名字
* @param header数据标头
* @param data数据项
*/
public static void writerCsv(String csvFilePath, String[] header,
String[][] data) {
CsvWriter writer = null;
try {
writer = new CsvWriter(csvFilePath, ',', Charset.forName("GBK"));// shift_jis日语字体
for (int i = 0; i < data.length; i++) {
writer.writeRecord(data[i]);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
writer.close();
}
}
}
分享到:
相关推荐
本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...
2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class="layui-btn"> <i class="fa fa-refresh"> 导出Excel ...
java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。
为了应对这种情况,我们需要采用优化策略来实现高效且不会内存溢出的大数据量CSV导出。 首先,了解Java中处理CSV的基本方法。Java标准库并没有提供直接处理CSV的API,但我们可以借助第三方库,如Apache Commons CSV...
在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...
javaCSV导入导出 ... File file = new File("C:/name.csv"); FileOutputStream out = new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(out); BufferedWriter bw = new ...
csv的文件的导入导出可能会用的到,需要的可以下一下把
Java作为一种强大的编程语言,提供了多种方法来处理CSV文件,包括读取和导出。本主题将深入探讨如何在Java中导出CSV,以及与Excel相比的优势。 1. **CSV文件格式**: CSV文件是通过逗号分隔值来存储数据的文本文件...
在Java编程环境中,CSV(Comma Separated Values)是一种常见的数据交换格式,广泛用于数据导入导出。"Java CSV批量导出工具类"是专为处理大量数据而设计的,尤其适用于那些需要处理千万级别的大数据集的情况。这个...
本文将详细介绍一个名为EasyCSV的工具类,它为Java开发者提供了一个简便的方式来导出CSV文件。 EasyCSV是Java的一个轻量级库,设计用于简化CSV文件的读写操作。它的核心功能在于其API简洁易用,使得开发者可以快速...
csv 总结导入导出 已经自测过,没有问题
标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...
JavaCSV库是一个用于Java编程语言的数据导入和导出工具,主要功能是帮助开发者处理CSV(逗号分隔值)文件。CSV格式广泛应用于数据交换,因为它简单、通用且易于读写。javacsv-2.1.jar是这个库的一个特定版本,它包含...
这个名为"java csv共用javacsv.jar.zip"的压缩包,包含了一个名为`javacsv.jar`的库文件,可以被Java项目引用以实现CSV文件的相关功能。 `javacsv`库由`csvreader`和`csvwriter`两个主要部分组成。`CsvReader`类...
java 导出csv格式文件(支持实体类输入)
本篇文章将深入探讨CSV导出大量数据的相关知识点。 1. CSV文件结构 CSV文件的基本结构非常简单,每一行代表一个记录,每列数据由逗号分隔。列的顺序和名称通常在文件的第一行作为表头。例如: ``` 姓名,年龄,城市 ...
下面我们将详细探讨如何实现高性能的CSV导出。 1. **内存管理与数据分块** 高性能CSV导出首先要考虑的是内存管理。一次性将所有数据加载到内存可能导致内存溢出,尤其是处理大量数据时。为了解决这个问题,可以...
CSV文件是一种常见的数据交换格式,通常用于导入和导出数据到电子表格程序如Microsoft Excel。当在Java程序中创建或读取CSV文件时,确保正确的字符编码是至关重要的,尤其是对于包含非ASCII字符(如中文字符)的数据...
Java CSV库,如javacsv 2.1,是处理CSV(逗号分隔值)文件的工具,这种格式在数据交换中非常常见,尤其在导入导出表格数据时。CSV因其简单、通用且易于处理的特性而广泛使用。下面我们将深入探讨javacsv 2.1库以及...
在Java开发中,有时我们需要将后端数据导出为CSV(Comma Separated Values)文件,以便用户可以方便地下载和处理数据。CSV文件是一种通用的、轻量级的数据交换格式,适合存储表格数据。本篇文章将深入探讨如何使用...