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<Object> head??List<List<Object>> 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<Object> 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<Object> 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<Map<String??Object>> retList) {
if(retList==null||retList.size()==0){
//
}else{
List<Object> head=new ArrayList<Object>();
List<List<Object>> dataList=new ArrayList<List<Object>>();
for (Map<String?? Object> map : retList) {
List<Object> date=new ArrayList<Object>();
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<Map<String??Object>> retList=querySql();
AssembledData(retList);
}
}