java 导出cvs_java导出cvs

public boolean exportDataToCSV(List dataList,

LinkedHashMap showTitle, String fileName,

HttpServletRequest request, HttpServletResponse response)

throws UnsupportedEncodingException {

boolean flag = false;

if (response != null && request != null) {

//获取浏览器类型

final String userAgent = request.getHeader("USER-AGENT");

// 输出流

OutputStream out = null;

// 待导出的数据

StringBuffer exportDate = new StringBuffer();

if (fileName == null) {

fileName = "";

}

SimpleDateFormat formatter = new SimpleDateFormat(

"yyyy-MM-dd HH:mm:ss");

Date curDate = new Date(System.currentTimeMillis());// 获取当前时间

fileName = fileName + formatter.format(curDate) + ".csv";

if (userAgent.contains("MSIE")) {// IE浏览器

fileName = URLEncoder.encode(fileName, "UTF8");

} else if (userAgent.contains("Mozilla")) {// google,火狐浏览器

fileName = new String(fileName.getBytes(), "ISO8859-1");

} else {

fileName = URLEncoder.encode(fileName, "UTF8");// 其他浏览器

}

// 提示框设置

response.reset(); // reset the response

// response.setCharacterEncoding("UTF-8");

response.setContentType("application/octet-stream");

response.setHeader("content-disposition", "attachment; filename=\""

+ fileName + "\"");

try {

// 获得显示字段(实体属性)

List fields = new ArrayList();

// 表头(实体中文名称)

if (showTitle != null && showTitle.size() > 0) {

StringBuffer tableHead = new StringBuffer();

for (Map.Entry entry : showTitle.entrySet()) {

tableHead.append(entry.getValue()).append(",");

fields.add(entry.getKey());

}

// 添加表头

exportDate.append(tableHead);

exportDate.append("\n");

}

// 列表数据

if (dataList != null && dataList.size() > 0) {

Object obj = dataList.get(0);

// 获得实体类的set/get方法

Method methods[] = obj.getClass().getDeclaredMethods();

// 将显示字段的get方法存入集合

List invokeMethods = new ArrayList();

for (int j = 0; j < fields.size(); j++) {

for (int i = 0; i < methods.length; i++) {

String methodName = methods[i].getName();

String tmpMethodName = methodName.substring(3,

methodName.length());

if (fields.get(j).toString().trim().toUpperCase()

.equals(tmpMethodName.toUpperCase())

&& methodName.indexOf("set") != 0

&& methodName.indexOf("get") == 0) {

invokeMethods.add(methods[i]);

}

}

}

// 获取数据

for (int i = 0; i < dataList.size(); i++) {

obj = dataList.get(i);

for (int j = 0; j < invokeMethods.size(); j++) {

Method method = invokeMethods.get(j);

Object tmpObj = method.invoke(obj);

if (tmpObj == null) {

tmpObj = "";

}

exportDate.append(tmpObj.toString());

exportDate.append(",");

}

exportDate.append("\n");

}

}

// System.out.println("============" + exportDate.toString());

out = response.getOutputStream();

byte[] bytes = exportDate.toString().getBytes("GBK");

out.write(bytes);

out.flush();

// 关闭输出流

if (out != null) {

exportDate.delete(0, exportDate.length());

}

flag = true;

log.info("文件导出完毕!");

} catch (Exception e) {

log.error(e);

e.printStackTrace();

log.error("导出数据时出现异常");

} finally {

if (out != null) {

try {

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}else{

new NullPointerException("HttpServletRequest Or HttpServletResponse Is Null !");

}

return flag;

}

//调用

@RequestMapping(value = "/exportDealerManager")

public void exportQueryData(HttpServletRequest request, HttpServletResponse response, FlDealer flDealer) throws Exception {

String fileName="名称";

ExportDataUtil edu = new ExportDataUtil();

List dealerList = flDealerManagerService.getDealerList(flDealer);

LinkedHashMap showColumn = new LinkedHashMap ();

//获取配置文件路径

StringBuffer filePath = new StringBuffer();

filePath.append(this.getClass().getResource("/"));

filePath.append("exportClassConfig.xml");

XMLOperUtil xmlUtil = new XMLOperUtil(filePath.substring(5).toString());

List elements = xmlUtil.getElements("/Classes/DealerManagerDownload/property", false);

//获取需要导出的字段

for(int i= 0; i

Element el = (Element) elements.get(i);

showColumn.put(el.attributeValue("ename"),el.attributeValue("cname"));

}

edu.exportDataToCSV(dealerList, showColumn, fileName, request, response);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值