public static void exportCsv(HttpServletResponse response, List list, String header) {
response.setContentType("text/plain");
String fileName = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
fileName = URLEncoder.encode(sdf.format(new Date()), "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
BufferedOutputStream buff = null;
StringBuffer write = new StringBuffer();
String enter = "\r\n";
ServletOutputStream outSTr = null;
try {
outSTr = response.getOutputStream(); // 建立
buff = new BufferedOutputStream(outSTr);
//把内容写入文件
if (list.size() > 0) {
write.append("<table cellspacing='1' cellpadding='0' rules='all' border='1' style='border-style:None;width:100pt;'>");
write.append(enter);
StringBuffer tableHeader = new StringBuffer();
tableHeader.append("<tr>");
String[] headerArray = header.split(",");
for (int i = 0; i < headerArray.length; i++) {
tableHeader.append("<td>");
tableHeader.append(headerArray[i].split(":")[0]);
tableHeader.append("</td>");
}
tableHeader.append("</tr>");
write.append(tableHeader.toString());
write.append(enter);
for (int j = 0; j < list.size(); j++) {
write.append("<tr>");
Object ob = list.get(j);
Class cl = ob.getClass();
for (int i = 0; i < headerArray.length; i++) {
String[] strings = headerArray[i].split(":")[1].split("\\|");
StringBuffer czBuffer = new StringBuffer();
czBuffer.append("<td>");
for (int k = 0; k < strings.length; k++) {
Field field = cl.getDeclaredField(strings[k]);
field.setAccessible(true);
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), cl);
Method getMethod = pd.getReadMethod();
if (field.getType().toString().equals("class java.util.Date")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (getMethod.invoke(ob) != null) {
czBuffer.append(sdf.format((Date) getMethod.invoke(ob)));
} else {
czBuffer.append(String.valueOf(getMethod.invoke(ob)));
}
} else {
czBuffer.append(String.valueOf(getMethod.invoke(ob)));
}
if (k < strings.length - 1) {
czBuffer.append(",");
}
}
czBuffer.append("</td>");
write.append(czBuffer.toString());
}
write.append("</tr>");
write.append(enter);
}
write.append("</table>");
}
buff.write(write.toString().replace("null", "").getBytes("UTF-8"));
buff.flush();
buff.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
buff.close();
outSTr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java反射之文本导出
最新推荐文章于 2022-08-03 16:41:35 发布