欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java查数据导出txt或者csv

程序员文章站 2022-03-15 13:01:49
...

导出的工具类代码如下,CSV依赖一个包 commons-csv-1.4.jar

package common.utils.csv;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

/**
 * CSV 导出工具类
 * 
 * @author yulisao
 * @createDate 2019-3-15
 */
public class CsvUtils {
	
	/**
	 * 生成csv文件
	 * 
	 * @author yulisao
	 * @date 2018年9月4日 下午2:31:17
	 * 
	 * @param header
	 *            表头
	 * @param dataList
	 *            数据列表
	 * @param outPath
	 *            写入路径
	 * @param fileName
	 *            文件名称
	 * @param lineSeparator
	 *            各记录列表分隔符
	 * @param recordSeparator
	 *            各数据项分隔符
	 * @return
	 */
	public static String writecsvFile(Object[] header, List<List<Object>> dataList, String outPath, String fileName,
			String lineSeparator, char recordSeparator) {
		makeDir(outPath);
		FileWriter fileWriter = null;
		CSVPrinter csvFilePrinter = null;
		String path = outPath + File.separator + fileName + ".csv";
		long start = System.currentTimeMillis();
		// 创建 CSVFormat
		CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(lineSeparator).withDelimiter(recordSeparator);
		try {
			System.out.println("CSV文件创建开始");
			// 初始化FileWriter
			fileWriter = new FileWriter(path);
			// 初始化 CSVPrinter
			csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);
			// 创建CSV文件头
			if (header != null && header.length > 0) {
				csvFilePrinter.printRecord(header);
			}
			// 遍历List写入CSV
			for (List<Object> dataRecord : dataList) {
				csvFilePrinter.printRecord(dataRecord);
				
			}
			long end = System.currentTimeMillis();

			System.out.println("CSV文件创建成功,用时" + (end - start) + "ms,路径:" + path);
			return path;
		} catch (Exception e) {
			System.out.println("CSV文件创建失败");
			e.printStackTrace();
		} finally {
			try {
				fileWriter.flush();
				fileWriter.close();
				csvFilePrinter.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return lineSeparator;
	}

	/**
	 * 生成 txt文件
	 * 
	 * @author yulisao
	 * @date 2018年9月4日 下午2:32:26
	 * 
	 * @param dataList
	 *            数据列表
	 * @param outPath
	 *            写入路径
	 * @param fileName
	 *            文件名称
	 * @param lineSeparator
	 *            各记录列表分隔符
	 * @param recordSeparator
	 *            各数据项分隔符
	 * @return
	 */
	public static String writetxtFile(List<List<Object>> dataList, String outPath, String fileName,
			String lineSeparator, String recordSeparator) {
		makeDir(outPath);
		FileWriter fw = null;
		String path = outPath + File.separator + fileName + ".txt";
		long start = System.currentTimeMillis();
		try {
			System.out.println("txt文件创建开始");
			File file = new File(path);
			if (file.exists()) {
				System.out.println("已存在文件");
			}
			fw = new FileWriter(file);
			BufferedWriter bw = new BufferedWriter(fw);
			for (List<Object> list : dataList) {
				for (int i = 0; i < list.size(); i++) {
					Object o = list.get(i);
					if (o == null) {
						bw.write("");
					} else {
						bw.write(String.valueOf(o));
					}
					if (i < list.size() - 1) {
						bw.write(recordSeparator);
					}
				}
				bw.write(lineSeparator);
			}
			bw.flush();
			bw.close();
			long length = file.length();
			long end = System.currentTimeMillis();
			System.out.println("txt文件创建成功,用时" + (end - start) + "ms,length=" + length + " byte,路径:" + path);
			return path;
		} catch (IOException e) {
			System.out.println("txt文件创建失败");
			e.printStackTrace();
		}
		return path;
	}


	/**
	 * 创建文件目录
	 * 
	 * @param outPath   
	 * @return void  
	 * @author yulisao
	 * @createDate 2019-3-15
	 */
	public static void makeDir(String outPath){
		File file = new File(outPath);
		if (!file.exists()) {
			file.mkdirs();
		}
	}

}

查询数据参考方案:

	public static void MyBeanTest(Date date) {
	final String NEW_LINE_SEPARATOR = "\r\n";
	final String separator = "|"; // 分隔符

		//输出路径				
		String fileName="mytestfile";	
		String path ="D:/mytestpath/";
						
		//查询
		List<MyBean> MyBean = bidService.queryMyBeanDataEnd(getEndBidIds(date));				
		if (MyBean == null|| MyBean.isEmpty()) {
			createPath(path,fileName);
			return;
		}
		
		List<List<Object>> dataList = new ArrayList<>();
		for (MyBean bid : MyBean) {
			//用于存储一行数据
			List<Object> list = new ArrayList<Object>();
			//添加第一行第一个元素
			list.add(bid.id);
			//添加第一行第二个元素
			list.add("55");
			//添加第一行第三个元素
			list.add("dd");
			//.....添加第N个元素
			
			//将这一行添加	到大list里面		
			dataList.add(list);
		}
		//导出
		CsvUtils.writetxtFile(dataList, path, fileName, NEW_LINE_SEPARATOR, separator);
		
	}

导出的格式TXT内容大致为
1|55|dd|…

相关标签: 导出