我是靠谱客的博主 落寞灰狼,这篇文章主要介绍csv读取写出,现在分享给大家,希望可以做个参考。

// 需要引入javacsv-2.0.jar


// csvUtil  csv帮助类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; /*import javax.servlet.http.HttpServletResponse;*/ public class csvUtil { /** * 读取CSV文件 * @param csvFilePath 文件路径 */ public static ArrayList<String[]> readeCsv(String csvFilePath) { ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据 try { CsvReader reader = new CsvReader(csvFilePath, ',',Charset.forName("GBK")); // 一般用这编码读就可以了 reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。 while (reader.readRecord()) { // 逐行读入除表头的数据 csvList.add(reader.getValues()); } reader.close(); } catch (Exception ex) { System.out.println(ex); } return csvList; } /** * 读取CSV文件 * @param csvIs csv导入数据流 */ public static ArrayList<String[]> readeCsvByIs(InputStream csvIs) { ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据 try { CsvReader reader = new CsvReader(csvIs,Charset.forName("GBK")); // 一般用这编码读就可以了 reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。 while (reader.readRecord()) { // 逐行读入除表头的数据 csvList.add(reader.getValues()); } reader.close(); } catch (Exception ex) { System.out.println(ex); } return csvList; } /** * 写入CSV文件 * * @param csvFilePath 写出路径 * * @param contents 数据内容 */ public static void writeCsv(String csvFilePath ,List<String[]> contents) { try { //String csvFilePath = "c:/test.csv"; CsvWriter wr = new CsvWriter(csvFilePath, ',',Charset.forName("GBK")); for (int i = 0; i < contents.size(); i++) { wr.writeRecord(contents.get(i)); } wr.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 输出文件 * @param ou 文件流 * @param list 需要输出的数据 * @throws java.io.IOException */ public static void writeCsv(OutputStream ou, List<String[]> list) throws IOException { CsvWriter cw = new CsvWriter(ou, ',', Charset.forName("UTF-8")); for(String[] s: list) { cw.writeRecord(s); } //在文件中增加BOM,详细说明可以Google,该处的byte[] 可以针对不同编码进行修改 ou.write(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }); cw.flush(); cw.close(); } /** * 导出csv模板 * * @param response * @param headers 模板列标题 * @param csvName csv文件名 * @throws java.io.IOException */ public static void exportCsv(HttpServletResponse response,String headers,String csvName) throws IOException { OutputStream fos = response.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(fos); try { fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); //这个就就是弹出下载对话框的关键代码 response.setContentType("text/csv"); response.setHeader("Content-disposition","attachment;filename=" +URLEncoder.encode(csvName+".csv", "UTF-8")); headers += "n"; bos.write(headers.getBytes("GBK")); bos.flush(); } catch (IOException ex) { System.out.print(ex); } finally { fos.close(); bos.close(); } } }

// controller层调取

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/** * 导入csv文件 * * @throws java.io.IOException */ @RequestMapping("/importCsv") public Object importCsv(MultipartHttpServletRequest request){ try { //文件数据 MultipartFile file = request.getFile("fileName"); //读取csv文件,获取csv中的数据 ArrayList<String[]> csvList = CsvUtil.readeCsvByIs(file.getInputStream()); } catch (Exception ex) { System.out.print(ex); } return 1; }

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
/** * 导出csv模板 * * @param response * @throws java.io.IOException */ @RequestMapping("/exportCsv") public void exportCsv(HttpServletRequest request,HttpServletResponse response) throws IOException { String headers = "header1,header2,header3"; String csvName = "csvName"; CsvUtil.exportCsv(response,headers,csvName); }

js导入按钮代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function importCsv(){ var dataForm = document.forms['dataForm']; dataForm.fileName.click(); } //选择上传文件后触发 function uploadFile(){ ajaxFileUpload(); } function ajaxFileUpload() { $.ajaxFileUpload({ url : url,//用于文件上传的服务器端请求地址 secureuri : false,//一般设置为false fileElementId : 'fileName',//文件上传控件的id属性 dataType : 'json',//返回值类型 一般设置为json success : function(data) //服务器成功响应处理函数 { } }) }

html页面代码:

复制代码
1
2
3
4
5
6
7
<form id="dataForm" name="dataForm" enctype="multipart/form-data" method="post" > <input id="fileName" name="fileName" type="file" style="display:none;" οnchange="uploadFile()"> <button type="button" class="btn btn-info" οnclick="importCsv()"> <span style="white-space:pre"> </span><span class="glyphicon"></span> 导入csv </button> </form>




最后

以上就是落寞灰狼最近收集整理的关于csv读取写出的全部内容,更多相关csv读取写出内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部