一
<!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.1</version>
</dependency>
package com.in.out.mine.controller;
import com.in.out.mine.ServiceImpl.FileServiceImpl;
import com.in.out.mine.entity.Student;
import com.in.out.mine.utils.ResObject;
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Controller
public class FileController {
@Autowired
private FileServiceImpl fileService;
@RequestMapping(value = "/export", method = RequestMethod.GET)
public String toExport() {
return "export";
}
@ResponseBody
@RequestMapping(value = "/import", method = RequestMethod.POST)
public ResObject importFunction(HttpServletResponse response, MultipartFile file) throws IOException {
InputStreamReader isr = new InputStreamReader(file.getInputStream(),"gbk");
CSVReader csvReader = new CSVReader(isr);
List<String[]> ret = csvReader.readAll();
System.out.println(ret.get(0)[1]);
System.out.println(ret.get(0)[2]);
System.out.println(ret.get(0)[3]);
String[] a = csvReader.readNext();
long bb = csvReader.getLinesRead();
long cc = csvReader.getRecordsRead();
List<Student> studentList = fileService.export();
return new ResObject();
}
@ResponseBody
@RequestMapping(value = "/export/download", method = RequestMethod.GET)
public void export(HttpServletResponse response) throws IOException {
List<Student> studentList = fileService.export();
response.setHeader("Content-Type","text/csv; charset=gbk");
response.setHeader("Content-Disposition","attachment; filename=export_"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".csv");
try(
OutputStream outputStream = response.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
) {
printWriter.println("id,姓名,地址,描述");
studentList.forEach(student -> {
printWriter.println(String.format("%s,%s,%s,%s",
String.valueOf(student.id),
student.name,
student.address,
student.desc)
);
});
}
}
@ResponseBody
@RequestMapping(value = "/export/download2", method = RequestMethod.GET)
public void export2(HttpServletResponse response) throws IOException {
List<Student> studentList = fileService.export();
response.setHeader("Content-Type","text/csv; charset=gbk");
response.setHeader("Content-Disposition","attachment; filename=export_"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".csv");
CSVWriter csvWriter = new CSVWriter(response.getWriter());
// try(
// OutputStream outputStream = response.getOutputStream();
// PrintWriter printWriter = new PrintWriter(outputStream);
{
String [] title = {"id","姓名","地址","描述"};
csvWriter.writeNext(title);
studentList.forEach(student -> {
String[] content = new String[]{
String.valueOf(student.id),
student.name,
student.address,
student.desc
};
csvWriter.writeNext(content);
});
}
}
}
二
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<form method="post" action="/import" enctype="multipart/form-data">
<input type="file" name="file" value="update"/>
<input type="submit" value="提交"/>
</form>
<a href="/export/download">下载</a>
<a href="/export/download2">下载2</a>
</body>
</html>