前言:示例只是做了一个最最基础的上传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> getresource(byte[] bate) throws ioexception {
list> allstring = new arraylist();
map callloginfo ;
list list = new arraylist();
// 获取文件内容
list = getsource(bate);
// 获取文件表头
list 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 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 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 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> list=readcsvutil.getresource(bate);
if(list!=null){
for(map m:list){
system.out.println("param1:"+m.get("param1")+";param2:"+m.get("param2")+"。");
}
}
}
}
}
html代码:
test上传:
示例文件
运行结果
在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!