欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-08 18:13:51
前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。readcsvutil工具类package com.hanfengyeqiao.gjb...

前言:示例只是做了一个最最基础的上传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>

示例文件

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

运行结果

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

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

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