java处理csv文件上传示例详解
程序员文章站
2022-04-02 22:54:22
前言:示例只是做了一个最最基础的上传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>
示例文件
运行结果
在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。