码迷,mamicode.com
首页 > 编程语言 > 详细

java导出cvs

时间:2014-11-25 15:51:27      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   java   for   文件   

public boolean exportDataToCSV(List dataList,
			LinkedHashMap<String, String> 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<String> fields = new ArrayList<String>();
				// 表头(实体中文名称)
				if (showTitle != null && showTitle.size() > 0) {
					StringBuffer tableHead = new StringBuffer();
					for (Map.Entry<String, String> 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<Method> invokeMethods = new ArrayList<Method>();
					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<FlDealer> dealerList = flDealerManagerService.getDealerList(flDealer);
		LinkedHashMap <String, String> showColumn = new LinkedHashMap <String, String>();
		//获取配置文件路径
		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<elements.size();i++){
			Element el = (Element) elements.get(i);
			showColumn.put(el.attributeValue("ename"),el.attributeValue("cname"));
		}
		edu.exportDataToCSV(dealerList, showColumn, fileName, request, response);
	}

  

  

java导出cvs

标签:blog   http   io   ar   os   sp   java   for   文件   

原文地址:http://www.cnblogs.com/xiaoxiaozhu/p/4120924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!