zoukankan      html  css  js  c++  java
  • csv格式读取通用类

    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. }  
  • 相关阅读:
    LeetCode-Number of Islands
    LeetCode-Minimum Height Trees
    百度地图采集
    三层自动生成 完整源代码(for oracle)
    在Oracle中更新数据时,抛出:ORA-01008: not all variables bound
    MD5加密 及获得密码盐
    验证:非空、手机号、邮箱
    向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
    反射ORM
    委托事件
  • 原文地址:https://www.cnblogs.com/lexus/p/2383751.html
Copyright © 2011-2022 走看看