博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查询数据库保存成CSV格式
阅读量:6943 次
发布时间:2019-06-27

本文共 2775 字,大约阅读时间需要 9 分钟。

package cn.com.atmb.gfs.work.Bookdemo;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.util.ArrayList;import java.util.List;import java.util.Map;import cn.com.atmb.configureFiles.propertityUtil;import cn.com.atmb.gfs.database.implementations.DAOTool;import cn.com.atmb.gfs.database.interfaces.BaseDAO;/** *  * CSV文件导出工具类 */public class CSVUtil {	static propertityUtil pro = propertityUtil.getInstance("path.properties");	static String PATH=pro.getProperty("PATH");	static String FILENAME=pro.getProperty("FILENAME");	/**	 * CSV文件生成方法	 * 	 * @param head 头部标题	 * @param dataList 内容	 * @param outPutPath 文件路径	 * @param filename 文件名称	 * @return	 */	public static File createCSVFile(List head,List
> dataList, String outPutPath, String filename) { File csvFile = null; BufferedWriter csvWtriter = null; try { //文件储存位置 csvFile = new File(outPutPath + File.separator + filename + ".csv"); File parent = csvFile.getParentFile(); if (parent != null && !parent.exists()) { parent.mkdirs(); } csvFile.createNewFile(); // GB2312使正确读取分隔符"," csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024); // 写入文件头部 writeRow(head, csvWtriter); // 写入文件内容 for (List row : dataList) { writeRow(row, csvWtriter); } csvWtriter.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { csvWtriter.close(); } catch (IOException e) { e.printStackTrace(); } } return csvFile; } /** * 写一行数据方法 * * @param row * @param csvWriter * @throws IOException */ private static void writeRow(List row, BufferedWriter csvWriter) throws IOException { // 写入文件头部 for (Object data : row) {// StringBuffer sb = new StringBuffer(); String rowStr="";// rowStr= sb.append("\"").append(data).append("\",").toString(); if(data.toString().contains("\"")){ rowStr="\""+data.toString().replaceAll("\"","\"\"")+"\","; }else{ rowStr="\""+data.toString()+"\","; } csvWriter.write(rowStr); } csvWriter.newLine(); } /** * 拼装数据方法 * @param retList 数据库查询结果集合 */ public static void AssembledData(List
> retList) { if(retList==null||retList.size()==0){ // }else{ List
head=new ArrayList(); List
> dataList=new ArrayList
>(); for (Map
map : retList) { List
date=new ArrayList(); for(Object key:map.keySet()){ date.add(map.get(key)); } dataList.add(date); } for(Object ob:retList.get(0).keySet()){ head.add(ob); } System.out.println(head); System.out.println(dataList); createCSVFile(head,dataList,PATH,FILENAME); } } public static void run(){ //querySql查询数据库方法 List
> retList=querySql(); AssembledData(retList); }}

 

转载于:https://www.cnblogs.com/hui-yue/p/5681605.html

你可能感兴趣的文章
浅谈代码审计入门实战:某博客系统最新版审计之旅
查看>>
nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)
查看>>
truncate/drop表非常慢,怎么办?用硬链接,极速体验
查看>>
spring boot测试
查看>>
Timer使用
查看>>
H5+混合移动app应用开发——坑我太甚
查看>>
nc/netcat命令
查看>>
web3.js编译Solidity,发布,调用全部流程(手把手教程)
查看>>
Java国际化号码验证方法,国内手机号正则表达式
查看>>
HDU 1158 Employment Planning
查看>>
表格内嵌编辑控件
查看>>
DNS解析原理和流程
查看>>
Windows程序设计_15_求书
查看>>
Firefox 6 正式发布
查看>>
ESET Smart Security – 免费90天(sv)
查看>>
微软职位内部推荐-Senior SDE
查看>>
js Object.prototype.toString.call()
查看>>
android:padding和android:margin的区别[转]
查看>>
开放源码的对象关系映射工具ORM.NET 快档开发入门 Quick Start
查看>>
Ural_1019. Line Painting(线段树)
查看>>