首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

csv格式读取通用种

2012-09-25 
csv格式读取通用类需要添加javacsv.jar 支持import static net.etongbao.common.utils.StringUtils.toStri

csv格式读取通用类

需要添加javacsv.jar 支持

import static net.etongbao.common.utils.StringUtils.toStringWithOutNull;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.csvreader.CsvReader;import com.csvreader.CsvWriter;/** * 解析CSV文件 *  * @author Fu Wei *  */public class CsvUtils {/** 编码 */private static final String ENCODING = "UTF-8";private static final Logger LOG = LoggerFactory.getLogger(CsvUtils.class);/** * csv格式读 *  * @param String * @return List<Map<String, Object>> * @throws CsvException */public static List<Map<String, Object>> csvReader(String csvText) {List<Map<String, Object>> csvList = new ArrayList<Map<String, Object>>();try {CsvReader reader = CsvReader.parse(csvText);// 考虑到图片大小,设置最大长度不受限制reader.setSafetySwitch(false);String[] headers = null;if (reader.readHeaders()) {headers = reader.getHeaders();while (reader.readRecord()) {Map<String, Object> csvMap = new HashMap<String, Object>();for (String head : headers) {csvMap.put(head, reader.get(head));}csvList.add(csvMap);}LOG.debug("CsvUtils--->csvList:{}", csvList);return csvList;} else {LOG.error("csv读取头失败");}} catch (UnsupportedEncodingException e) {LOG.error("csv读取编码异常");} catch (IOException e) {LOG.error("csv读取IO异常", e);}return null;}/** * csv写 *  * @param csvList * @return * @throws CsvException */public static String csvWriter(List<Map<String, Object>> csvList) {String csvText = null;ByteArrayOutputStream stream = new ByteArrayOutputStream();CsvWriter writer = new CsvWriter(stream, ',', Charset.forName(ENCODING));if (csvList != null && csvList.size() > 0) {// 获取第一行map key,Map<String, Object> headMap = csvList.get(0);if (headMap != null && 0 <= headMap.size()) {// 提取cvs列Iterator<String> it = headMap.keySet().iterator();try {while (it.hasNext()) {writer.write(it.next());}writer.endRecord();boolean falg = false;for (Map<String, Object> csvMap : csvList) {if (falg) {writer.endRecord();}for (Entry<String, Object> map : csvMap.entrySet()) {String value = toStringWithOutNull(map.getValue());writer.write(value);}falg = true;}writer.close();csvText = stream.toString();stream.close();return csvText;} catch (IOException e) {LOG.warn("csv写入IO异常");}} else {LOG.warn("拆解cvs数据为空");}} else {LOG.warn("拆解cvs数据为空");}return null;}}
?

热点排行