void uploadSomeType(@RequestParam("uploadFile") MultipartFile multipartFile) {
? ? ? ? //進(jìn)行文件讀取配置
? ? ? ? CsvReadConfig csvReadConfig = new CsvReadConfig();
? ? ? ? csvReadConfig.setSkipEmptyRows(true);
? ? ? ? csvReadConfig.setContainsHeader(true);
? ? ? ? //構(gòu)建 CsvReader 對象
? ? ? ? CsvReader csvReader = CsvUtil.getReader(csvReadConfig);
? ? ? ? //讀取文件,封裝成 Bean
? ? ? ? if (null == multipartFile) {
? ? ? ? ? ? log.info("設(shè)備類型文件不能為空!");
? ? ? ? ? ? return new BaseResponse<>(ApiResponseStatus.COMMON_FAIL);
? ? ? ? }
? ? ? ? ArrayList<SomeType> deviceTypeList = new ArrayList<SomeType>();
? ? ? ? try {
? ? ? ? ? ? File file = uploadFile(multipartFile);
? ? ? ? ? ? deviceTypeList = (ArrayList<SomeType>) csvReader.read(new FileReader(file), SomeType.class);
? ? ? ? ? ? file.delete();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? log.info("設(shè)備類型文件上傳失?。。?!");
? ? ? ? }
? ? ? ? //判重后,添加設(shè)備類型入庫
? ? ? ? for(SomeType deviceType:deviceTypeList){
? ? ? ? }
}
postman文件上傳:

//導(dǎo)出到csv文件
public static <T> void downloadsToCsvFile(HttpServletResponse response, List<T> list, String uniPath, String filenam, String cment, Locale locale) throws IOException {
? ? ? ? File file;
? ? ? ? try {
? ? ? ? ? ? //響應(yīng)類型
? ? ? ? ? ? response.setContentType("multipart/form-data");
? ? ? ? ? ? response.setCharacterEncoding("utf-8");
? ? ? ? ? ? // 這里URLEncoder.encode可以防止中文亂碼
? ? ? ? ? ? String fileNameStr = URLEncoder.encode( filename, "UTF-8").replace("+", "%20");
? ? ? ? ? ? //響應(yīng)的是? .csv 文件的后綴
? ? ? ? ? ? response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileNameStr + ".csv");
? ? ? ? ? ? String filePath=staticFilePath+ uniquePath +filename+".csv";
? ? ? ? ? ? log.info("-----filePath {}", filePath);
? ? ? ? ? ? file=new File(filePath);
? ? ? ? ? ? File dir = file.getParentFile();
? ? ? ? ? ? // 創(chuàng)建文件夾
? ? ? ? ? ? if (!dir.exists()) {
? ? ? ? ? ? ? ? dir.mkdirs();
? ? ? ? ? ? }
? ? ? ? ? ? // 創(chuàng)建文件
? ? ? ? ? ? if(!file.exists()){
? ? ? ? ? ? ? ? file.createNewFile();
? ? ? ? ? ? }
????????????// 第一行需要寫入bom(三個(gè)字節(jié),提示office為utf-8格式),否則Excel打開會(huì)多語言亂碼
? ? ? ? ? ? FileOutputStream out = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? out=new FileOutputStream(file);
? ? ? ? ? ? ? ? out.write(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF});
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? } finally {
? ? ? ? ? ? ? ? if (out != null) {
? ? ? ? ? ? ? ? ? ? out.flush();
? ? ? ? ? ? ? ? ? ? out.close();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
????????????CsvWriter csvWriter = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? //追加的方式,將數(shù)據(jù),寫入到 文件里面。
? ? ? ? ? ? ? ? csvWriter = CsvUtil.getWriter(file, Charset.forName("UTF-8"), true);
? ? ? ? ? ? ? ? if (!StringUtils.isEmpty(comment)) {
? ? ? ? ? ? ? ? ? ? csvWriter.writeComment(comment);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (CollUtil.isNotEmpty(list)) {
? ? ? ? ? ? ? ? ? ? boolean isFirst = true;
? ? ? ? ? ? ? ? ? ? Map<String, Object> map;
? ? ? ? ? ? ? ? ? ? for (Object bean : list) {
? ? ? ? ? ? ? ? ? ? ? ? map = BeanUtil.beanToMap(bean);
? ? ? ? ? ? ? ? ? ? ? ? if (isFirst) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? String titlesStr = InternationalizeUtil.get("MSG.Report.Export.Headers", locale);
? ? ? ? ? ? ? ? ? ? ? ? ? ? String[] titles = Arrays.asList(titlesStr.split(",")).toArray(new String[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? csvWriter.writeHeaderLine(titles);
????????????????????????}
? ? ? ? ? ? ? ? }
? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? ? ? } finally {
? ? ? ? ? ? ? ? if (csvWriter != null) {
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? csvWriter.flush();
? ? ? ? ? ? ? ? ? ? ? ? csvWriter.close();
? ? ? ? ? ? ? ? ? ? } catch (IORuntimeException e) {
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
//下載文件
//? ? ? ? ? ? try {
//? ? ? ? ? ? ? ? downloadFileNew(response, file, fileNameStr + ".csv");
//? ? ? ? ? ? } catch (Exception e) {
//? ? ? ? ? ? ? ? throw new RuntimeException(e);
//? ? ? ? ? ? }? finally {
//? ? ? ? ? ? ? ? //將該文件刪除
////? ? ? ? ? ? ? ? file.delete();
//? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
? ? }
// 下載文件流
public static boolean downloadFile(HttpServletResponse response, File file, String filename) {
? ? ? ? FileInputStream fileInputStream = null;
? ? ? ? BufferedInputStream bufferedInputStream = null;
? ? ? ? OutputStream os = null;
? ? ? ? try {
? ? ? ? ? ? // 設(shè)置響應(yīng)頭,控制瀏覽器下載該文件, 傳文件名
? ? ? ? ? ? response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
? ? ? ? ? ? fileInputStream = new FileInputStream(file);
? ? ? ? ? ? bufferedInputStream = new BufferedInputStream(fileInputStream);
? ? ? ? ? ? os = response.getOutputStream();
????????????//MS產(chǎn)本頭部需要插入BOM
? ? ? ? ? ? //如果不寫入這幾個(gè)字節(jié),會(huì)導(dǎo)致用Excel打開時(shí),中文顯示亂碼,windows下實(shí)踐發(fā)現(xiàn)寫兩次,記事本才能識別到bom
? ? ? ? ? ? os.write(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF});
? ? ? ? ? ? byte[] buffer = new byte[1024];
? ? ? ? ? ? int i = bufferedInputStream.read(buffer);
? ? ? ? ? ? while (i != -1) {
? ? ? ? ? ? ? ? os.write(buffer, 0, i);
? ? ? ? ? ? ? ? i = bufferedInputStream.read(buffer);
? ? ? ? ? ? }
? ? ? ? ? ? return true;
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally {
????????????//關(guān)閉流
? ? ? ? ? ? if (os != null) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? os.flush();
? ? ? ? ? ? ? ? ? ? os.close();
? ? ? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (bufferedInputStream != null) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? bufferedInputStream.close();
? ? ? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
????????if (fileInputStream != null) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? fileInputStream.close();
? ? ? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }