知道表头、各行数据得到CSV文件流数据

来源:互联网 发布:java file 相对路径 编辑:程序博客网 时间:2024/05/29 10:08

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(), "");//替换最后的 splitreturn title.toString();}}




0 0
原创粉丝点击