浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

csv格式读取通用类 - - ITeye技术网站

需要添加javacsv.jar 支持

 

Java代码  收藏代码
  1. import static net.etongbao.common.utils.StringUtils.toStringWithOutNull;  
  2. import java.io.ByteArrayOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.nio.charset.Charset;  
  6. import java.util.ArrayList;  
  7. import java.util.HashMap;  
  8. import java.util.Iterator;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11. import java.util.Map.Entry;  
  12.   
  13. import org.slf4j.Logger;  
  14. import org.slf4j.LoggerFactory;  
  15.   
  16. import com.csvreader.CsvReader;  
  17. import com.csvreader.CsvWriter;  
  18.   
  19. /** 
  20.  * 解析CSV文件 
  21.  *  
  22.  * @author Fu Wei 
  23.  *  
  24.  */  
  25. public class CsvUtils {  
  26.     /** 编码 */  
  27.     private static final String ENCODING = "UTF-8";  
  28.   
  29.     private static final Logger LOG = LoggerFactory.getLogger(CsvUtils.class);  
  30.   
  31.     /** 
  32.      * csv格式读 
  33.      *  
  34.      * @param String 
  35.      * @return List<Map<String, Object>> 
  36.      * @throws CsvException 
  37.      */  
  38.     public static List<Map<String, Object>> csvReader(String csvText) {  
  39.         List<Map<String, Object>> csvList = new ArrayList<Map<String, Object>>();  
  40.         try {  
  41.             CsvReader reader = CsvReader.parse(csvText);  
  42.             // 考虑到图片大小,设置最大长度不受限制  
  43.             reader.setSafetySwitch(false);  
  44.             String[] headers = null;  
  45.             if (reader.readHeaders()) {  
  46.                 headers = reader.getHeaders();  
  47.                 while (reader.readRecord()) {  
  48.                     Map<String, Object> csvMap = new HashMap<String, Object>();  
  49.                     for (String head : headers) {  
  50.                         csvMap.put(head, reader.get(head));  
  51.                     }  
  52.                     csvList.add(csvMap);  
  53.                 }  
  54.                 LOG.debug("CsvUtils--->csvList:{}", csvList);  
  55.                 return csvList;  
  56.             } else {  
  57.                 LOG.error("csv读取头失败");  
  58.             }  
  59.         } catch (UnsupportedEncodingException e) {  
  60.             LOG.error("csv读取编码异常");  
  61.         } catch (IOException e) {  
  62.             LOG.error("csv读取IO异常", e);  
  63.         }  
  64.         return null;  
  65.     }  
  66.   
  67.     /** 
  68.      * csv写 
  69.      *  
  70.      * @param csvList 
  71.      * @return 
  72.      * @throws CsvException 
  73.      */  
  74.     public static String csvWriter(List<Map<String, Object>> csvList) {  
  75.         String csvText = null;  
  76.         ByteArrayOutputStream stream = new ByteArrayOutputStream();  
  77.         CsvWriter writer = new CsvWriter(stream, ',', Charset.forName(ENCODING));  
  78.         if (csvList != null && csvList.size() > 0) {  
  79.             // 获取第一行map key,  
  80.             Map<String, Object> headMap = csvList.get(0);  
  81.   
  82.             if (headMap != null && 0 <= headMap.size()) {  
  83.                 // 提取cvs列  
  84.                 Iterator<String> it = headMap.keySet().iterator();  
  85.                 try {  
  86.                     while (it.hasNext()) {  
  87.                         writer.write(it.next());  
  88.                     }  
  89.                     writer.endRecord();  
  90.                     boolean falg = false;  
  91.                     for (Map<String, Object> csvMap : csvList) {  
  92.                         if (falg) {  
  93.                             writer.endRecord();  
  94.                         }  
  95.                         for (Entry<String, Object> map : csvMap.entrySet()) {  
  96.                             String value = toStringWithOutNull(map.getValue());  
  97.                             writer.write(value);  
  98.                         }  
  99.                         falg = true;  
  100.                     }  
  101.                     writer.close();  
  102.                     csvText = stream.toString();  
  103.                     stream.close();  
  104.                     return csvText;  
  105.                 } catch (IOException e) {  
  106.                     LOG.warn("csv写入IO异常");  
  107.                 }  
  108.             } else {  
  109.                 LOG.warn("拆解cvs数据为空");  
  110.             }  
  111.         } else {  
  112.             LOG.warn("拆解cvs数据为空");  
  113.         }  
  114.         return null;  
  115.     }  
  116.   
  117. }  

 

posted on 2012-03-07 16:24  lexus  阅读(702)  评论(0编辑  收藏  举报