opencsv-操作CSV文件
小于 1 分钟
opencsv-操作CSV文件
依赖
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.5</version>
</dependency>
读CSV文件
public class CsvReader {
public static void main(String[] args) throws IOException {
String csvFile = "D:\\test.csv";
CSVReader reader = new CSVReader(new FileReader(csvFile));
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String cell : nextLine) {
System.out.println(cell);
}
}
}
}
写入CSV文件
public class CsvWriter {
public static void main(String[] args) throws IOException {
try {
// 准备输出流
ServletOutputStream outputStream = response.getOutputStream();
// 文件名
String filename="百万数据.csv";
// 设置两个头 一个是文件的打开方式 一个是mime类型
response.setHeader( "Content-Disposition", "attachment;filename=" + new String(filename.getBytes(),"ISO8859-1"));
response.setContentType("text/csv");
// 创建一个用来写入到csv文件中的writer
CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream,"utf-8"));
// 先写头信息
writer.writeNext(new String[]{"编号","姓名","手机号","入职日期","现住址"});
// 如果文件数据量非常大的时候,我们可以循环查询写入
int page = 1;
int pageSize=200000;
while (true) { //不停地查询
List<User> userList = this.findPage(page, pageSize);
if (CollectionUtils.isEmpty(userList)) { //如果查询不到就不再查询了
break;
}
// 把查询到的数据转成数组放入到csv文件中
for (User user : userList) {
writer.writeNext(new String[]{user.getId().toString(),user.getUserName(),user.getPhone(),simpleDateFormat.format(user.getHireDate()),user.getAddress()});
}
writer.flush();
page++;
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}