java导出和导入csv文件工具类

来源:互联网 发布:女生学编程 编辑:程序博客网 时间:2024/05/27 02:30
package com.yy.utils;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;


import javax.servlet.http.HttpServletResponse;


import jxl.common.Logger;


public class CSVUtils {
public static Logger logger = Logger.getLogger(CSVUtils.class);
public static String TAB = "\r\n";
static{
Properties prop = System.getProperties();
String os = prop.getProperty("os.name").toLowerCase();
if(os.startsWith("win")){
TAB = "\r\n";
}else if(os.startsWith("linux") || os.startsWith("unix")){
TAB = "\n";
}else if(os.startsWith("mac")){
TAB = "\r";
}
}

/**
* @Description: 导出csv
* @param response
* @param titles
* @param data
* @param fileName
* @author: leijing
* @date: 2016年7月28日 下午6:19:33
*/
public static void exportCsv(HttpServletResponse response,List<String> titles,List<List<String>> data,String fileName){
StringBuffer sb = new StringBuffer();
OutputStream outputStream = null;
for (int i = 0; i < titles.size(); i++) {
if(i != titles.size() - 1){
sb.append(titles.get(i)).append(",");
}else{
sb.append(titles.get(i)).append(TAB);
}
}

for (int i = 0; i < data.size(); i++) {
List<String> row = data.get(i);
for(int j = 0 ; j < row.size(); j++ ){
if(j != row.size() - 1){
sb.append(row.get(j)).append(",");
}else{
sb.append(row.get(j)).append(TAB);
}
}

}

try {

response.addHeader("Content-Disposition","attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso8859-1"));  
//response.addHeader("Content-Length", "" + sb.length());  
//response.setContentType("application/csv;charset=UTF-8"); 
response.setContentType("multipart/form-data");//设置文件ContentType类型,这样设置,会自动判断下载文件类型
outputStream = response.getOutputStream();
outputStream.write(new   byte []{( byte ) 0xEF ,( byte ) 0xBB ,( byte ) 0xBF });//加上bom头,才不会中文乱码     
outputStream.write(sb.toString().getBytes("UTF-8"));
outputStream.flush();
} catch (IOException e) {
logger.error("CSVUtils.exportCsv error:",e);
}finally{
try {
outputStream.close();
} catch (IOException e) {
logger.error("CSVUtils.exportCsv close OutputStream error:",e);
}
}
}

/**
* @Description: 导入csv
* @param file
* @return: List<String>
* @author: leijing  
* @date: 2016年7月28日 下午6:20:14
*/
public static List<String> importCsv(File file){
List<String> data = new ArrayList<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line = "";
while((line = br.readLine()) != null){
data.add(line);
}
} catch (Exception e) {
logger.error("CSVUtils.importCsv error:",e);
}finally{
try {
br.close();
} catch (IOException e) {
logger.error("CSVUtils.importCsv close BufferedReader error:",e);
}
}

return data;
}

/**
*
* @Description: 导入csv
* @param inputStream
* @return: List<String>
* @author: leijing  
* @date: 2016年7月28日 下午6:20:44
*/
public static List<String> importCsv(InputStream inputStream){
List<String> data = new ArrayList<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while((line = br.readLine()) != null){
data.add(line);
}

} catch (Exception e) {
logger.error("CSVUtils.importCsv error:",e);
}finally{
try {
br.close();
inputStream.close();
} catch (IOException e) {
logger.error("CSVUtils.importCsv close BufferedReader or InputStream error:",e);
}

}
return data;
}

}
0 0
原创粉丝点击