sqlExport 是我们传过来的sql
databaseOracle 是连接数据库 这是封装的 自己可以用简单的方法连接自己的数据库就行了
resultExport 这是最终的listMap 你只要查出这个 然后下面的代码就可以直接用了
public String exportRruAlarmAsCsv() {
List<Map> resultExport = null;
//System.out.println("sqlExport:::" + sqlExport);
if (null != sqlExport && !"".equals(sqlExport)) {
Session session = databaseOracle.openSession();
Writer sw = null;
CSVWriter writer = null;
try {
resultExport = session.queryForList(sqlExport);
if (resultExport.size() > 0) {
getResponse().setHeader("Content-Disposition","attachment; filename=RruAlram.csv");
getResponse().setContentType("application/vnd.ms-csv;CHARSET=gbk");
getResponse().setCharacterEncoding("gbk");
sw = getResponse().getWriter();
writer = new CSVWriter(sw);
Map m = resultExport.get(0);
Iterator it = m.keySet().iterator();
int cnt = m.size();
String[] headerStr = new String[cnt];
int k = 0;
while (it.hasNext()) {
String key = (String)it.next();
headerStr[k++] = key;
}
writer.writeNext(headerStr);
int count = 1;
for (int i = 0; i < resultExport.size(); i++) {
Map map = resultExport.get(i);
String[] valueArr =new String[cnt];
for(int x=0; x < headerStr.length; x++){
valueArr[x]=String.valueOf( map.get(headerStr[x]));
}
writer.writeNext(valueArr);
if(count % 100 == 0){
writer.flush();
}
count++;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(sw!=null)
sw.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if(writer!=null)
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if(session!=null)
session.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return null;
}