导出CSV文件

本文介绍了一个名为CsvUtil的工具类,该类用于处理CSV文件的导出操作。通过使用这个工具,可以方便地进行数据的格式化和写入到CSV文件中,简化了CSV文件操作的流程。
摘要由CSDN通过智能技术生成
//设置csv头
        String title = "主键,数据源名称,数据源编号,数据源类型,数据库类型,地址,端口,驱动类,用户名,密码,数据库/模式,创建时间,创建人,修改时间,修改人";
        //设置map的key,用于获取值
        String mapKey = "id,dsName,dsCode,dsType,dbType,dsUrl,dsPort,driverClass,dsUserName,dsPassWord,dsSchema,createdTime,createdUser,modiffiedTime,modiffiedUser";

        //OutputStream输出的地址
        File file = new File("E:\\ioTest\\shujuku.csv");
        FileOutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        boolean b = CsvUtil.doExport(list, title, mapKey, outputStream);
CsvUtil工具类
public class CsvUtil {
    /** CSV文件列分隔符 */
    private static final String CSV_COLUMN_SEPARATOR = ",";

    /** CSV文件列分隔符 */
    private static final String CSV_RN = "\r\n";

    private static final Logger logger = LoggerFactory.getLogger(CsvUtil.class);

    public static boolean doExport(List<Map<String, Object>> dataList, String colNames, String mapKey, OutputStream os) {
        try {
            StringBuffer buf = new StringBuffer();

            String[] colNamesArr = null;
            String[] mapKeyArr = null;

            colNamesArr = colNames.split(",");
            mapKeyArr = mapKey.split(",");

            // 完成数据csv文件的封装
            // 输出列头
            for (String aColNamesArr : colNamesArr) {
                buf.append(aColNamesArr).append(CSV_COLUMN_SEPARATOR);
            }
            buf.append(CSV_RN);

            if (null != dataList) { // 输出数据
                for (Map<String, Object> aDataList : dataList) {
                    for (String aMapKeyArr : mapKeyArr) {
                        buf.append(aDataList.get(aMapKeyArr)).append(CSV_COLUMN_SEPARATOR);
                    }
                    buf.append(CSV_RN);
                }
            }
            // 写出响应
            os.write(buf.toString().getBytes("UTF-8"));
            os.flush();
            return true;
        } catch (Exception e) {
            logger.error("doExport错误...", e);
        }
        return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值