import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
*
*/
public class ExportCsvUtils {
/**
* CSV文件的分隔符
*/
private static String split = ",";
/**
* 换行符
*/
private static String lineEnd = "\r\n";
/**
* 导出带序号的cvs文件
* @param titleMap 数据库列名与列中文名对应关系 :表头
* @param list 用于生成文件的数据列表 :具体数据
* @return
*/
@SuppressWarnings("rawtypes")
public static String toCsv(Map titleMap,List list) {
StringBuffer csv = new StringBuffer("序号");
String title = split+getCsvTitle(titleMap);
csv.append(title).append(lineEnd);
Set titleSet = titleMap.keySet();
for (int i = 0; i < list.size(); i++) {
Map mapList = (Map) list.get(i);
Iterator it = titleSet.iterator();
csv.append(i+1).append(split);
while(it.hasNext()){
csv.append(processString((String)mapList.get((String)it.next()))).append(split);
}
csv.replace(csv.length()-split.length(), csv.length(), lineEnd);//替换最后的 split
}
return csv.toString();
}
/**
* 处理字符串(为null、包含","的情况)
*
* @param s
* @return
*/
private static String processString(String s) {
if (s == null) {
return "";
}
if (s.indexOf(split) == -1) {
return s.replaceAll("\n", "").replaceAll("\t", "");
} else {
return "\"" + s.replaceAll("\n", "").replaceAll("\t", "") + "\"";
}
}
/**
* 生成并返回CSV文件的标题
*
* @param csv
* @return
*/
@SuppressWarnings("rawtypes")
private static String getCsvTitle(Map titleMap) {
StringBuffer title = new StringBuffer();
Set titleSet = titleMap.keySet();
Iterator iterator = titleSet.iterator();
while(iterator.hasNext()){
String tmp = (String)titleMap.get((String)iterator.next());
title.append(tmp).append(split);
}
title.replace(title.length()-split.length(), title.length(), "");//替换最后的 split
return title.toString();
}
}