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|…
上一篇: phone启动流程
下一篇: 程序员推荐适合用的笔记本电脑