java处理csv文件上传示例详解

 更新时间:2020年12月31日 15:56  点击:1457

前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。

ReadCsvUtil工具类

package com.hanfengyeqiao.gjb.utils;
import java.io.*;
import java.util.*;
 
/**
 * csv工具类
 */
public class ReadCsvUtil {
  private static final String FIX="\uFEFF";
  /**
   * 获取csv文件内容
   * @return 对象list
   */
  public static List<Map<String,Object>> getResource(byte[] bate) throws IOException {
    List<Map<String,Object>> allString = new ArrayList();
    Map<String,Object> callLogInfo ;
    List<String> list = new ArrayList();
    // 获取文件内容
    list = getSource(bate);
    // 获取文件表头
    List<String> title = Arrays.asList(list.get(0).split(","));
    String customerName = title.get(0).trim();
    String customerNo = title.get(1).trim();
    // 头部会带有"\uFEFF"值
    if(customerName.startsWith(FIX)){
      customerName = customerName.replace(FIX, "");
    }
    callLogInfo = new HashMap();
    callLogInfo.put("param1",customerName);
    callLogInfo.put("param2",customerNo);
    allString.add(callLogInfo);
 
    list.remove(0);
    // 循环内容
    for(int i = 0; i<list.size();i++){
      List<String> content = Arrays.asList(list.get(i).split(","));
      // 当没有添加额外参数时
      if(content!=null){
        callLogInfo = new HashMap();
        callLogInfo.put("param1",content.get(0));
        callLogInfo.put("param2",content.get(1));
        allString.add(callLogInfo);
      }
    }
    return allString;
  }
 
  /**
   * 读文件数据
   */
  public static List<String> getSource(byte[] bate) throws IOException {
    BufferedReader br = null;
    ByteArrayInputStream fis=null;
    InputStreamReader isr = null;
    try {
      fis = new ByteArrayInputStream(bate);
      //指定以UTF-8编码读入
      isr = new InputStreamReader(fis,"UTF-8");
      br = new BufferedReader(isr);
    } catch (Exception e) {
      e.printStackTrace();
    }
    String line;
    String everyLine ;
    List<String> allString = new ArrayList<>();
    try {
      //读取到的内容给line变量
      while ((line = br.readLine()) != null){
        everyLine = line;
        allString.add(everyLine);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }finally {
      if(fis != null){
        fis.close();
      }
      if(isr != null){
        isr.close();
      }
    }
    return allString;
  }
}

控制器(这里用的springboot):

package com.hanfengyeqiao.gjb.controller.admin;
 
import com.hanfengyeqiao.gjb.utils.ReadCsvUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
 
@Api(tags = "")
@RestController
@RequestMapping("/admin")
public class AdminCertController {
  @RequestMapping("/test/upload")
  public void upload(HttpServletRequest request, MultipartFile upfile) throws Exception {
    if (request.getMethod().equals("POST")) {
      byte[] bate =upfile.getBytes();
 
      List<Map<String,Object>> list=ReadCsvUtil.getResource(bate);
      if(list!=null){
        for(Map<String,Object> m:list){
          System.out.println("param1:"+m.get("param1")+";param2:"+m.get("param2")+"。");
        }
      }
    }
  }
}

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>
 
<form action="http://localhost:8088/admin/test/upload" method="post" enctype="multipart/form-data">
  上传:<input type="file" name="upfile"/>
  <input type="submit" value="提交"/>
</form>
 
</body>
<script type="text/javascript">
</script>
</html>

示例文件

运行结果

在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • Java实现经典游戏复杂迷宫

    这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
  • java 运行报错has been compiled by a more recent version of the Java Runtime

    java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01
  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • pandas pd.read_csv()函数中parse_dates()参数的用法说明

    这篇文章主要介绍了pandas pd.read_csv()函数中parse_dates()参数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-05
  • Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
  • 浅谈Java与C#的一些细微差别

    说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • 解决Java处理HTTP请求超时的问题

    这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • java 判断两个时间段是否重叠的案例

    这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • 超简洁java实现双色球若干注随机号码生成(实例代码)

    这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)

    这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15
  • Java开发实现人机猜拳游戏

    这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
  • Java List集合返回值去掉中括号('[ ]')的操作

    这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29