我是靠谱客的博主 落寞灰狼,最近开发中收集的这篇文章主要介绍csv读取写出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

// 需要引入javacsv-2.0.jar


// csvUtil  csv帮助类

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层调取

/**
* 导入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;
}

 /**
* 导出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导入按钮代码:

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页面代码:

<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读取写出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部