使用hutool csv生成csv文件

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.text.csv.*;
import cn.hutool.core.util.CharsetUtil;

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.util.Collection;
import java.util.List;

/**
*
*/
@Slf4j
public class CsvUtils {

private static final String SUFFIX = ".csv";

public static final String MKDIRS = "qpdoc";


/**
 * CSV文件生成方法
 *
 * @param head
 * @param dataList
 * @return
 */
public static InputStream createCSVFile(List<Object> head, List<List<Object>> dataList) {
    BufferedWriter csvWtriter = null;
    // 返回流   可以自己更改为文件流的形式,下载到本地
    ByteArrayInputStream byteArrayInputStream = null;

// 创建文件流的形式
// File file=null;
// new File("");
// file= file.getParentFile();
// if (file!=null&&!file.exists()){
// file.mkdirs();
// }
// file.createNewFile();
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// GB2312使正确读取分隔符","
// 如果生产文件乱码,windows下用gbk,linux用UTF-8
csvWtriter = new BufferedWriter(new OutputStreamWriter(outputStream, “GB2312”), 1024);
// 写入文件头部
writeRow(head, csvWtriter);
// 写入文件内容
for (List row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
byteArrayInputStream = new ByteArrayInputStream(outputStream.toByteArray());
} catch (IOException e) {
throw new BusinessException(e.getMessage());
} finally {
try {
assert csvWtriter != null;
csvWtriter.close();
assert byteArrayInputStream != null;
byteArrayInputStream.close();
} catch (IOException e) {
throw new BusinessException(e.getMessage());
}
}

    return byteArrayInputStream;
}

/**
 * 写一行数据方法
 *
 * @param row
 * @param csvWriter
 * @throws IOException
 */
private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
    // 写入文件头部
    for (Object data : row) {
        String rowStr = "\"" + data + "\",";
        csvWriter.write(rowStr);

    }
    csvWriter.newLine();
}


/**
 * 通过地址读
 *
 * @param filePath
 */
public static void readCSV(String filePath) {
    CsvReader reader = CsvUtil.getReader();
    //从文件中读取CSV数据
    CsvData data = reader.read(FileUtil.file(filePath));
    List<CsvRow> rows = data.getRows();
    //遍历行
    for (CsvRow csvRow : rows) {
        //getRawList返回一个List列表,列表的每一项为CSV中的一个单元格(既逗号分隔部分)
        System.out.println(csvRow.getRawList());
    }
}


/**
 * 导出excle
 *
 * @param filePath
 * @param lines
 */
public static void writeCSV(String filePath, Collection<String[]> lines) {
    //指定路径和编码
    CsvWriter writer = null;
    try {
        writer = CsvUtil.getWriter(filePath + ".csv", CharsetUtil.CHARSET_GBK);
        //按行写出
        writer.write(lines);
    } catch (IORuntimeException e) {
        e.printStackTrace();
    } finally {
        assert writer != null;
        writer.close();
    }
}

}


版权声明:本文为hao65103940原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。