java 导出 txt

http://qingfeng825.javaeye.com/blog/461504

 

Java代码 复制代码
  1.  第一种形式,是以流的开式直接response,适用于数据量不是很大的情况下。  
 第一种形式,是以流的开式直接response,适用于数据量不是很大的情况下。
Java代码 复制代码
  1. 第二种形式,是先将要下载的文件写到后台的一个文件或者excel 中,然后再进行下载。  
第二种形式,是先将要下载的文件写到后台的一个文件或者excel 中,然后再进行下载。
Java代码 复制代码
  1. 第一种实现:  
第一种实现:
Java代码 复制代码
  1. package com.smartdot.pdm.business.corp.magazine.util;   
  2.   
  3. import java.io.BufferedOutputStream;   
  4. import java.text.SimpleDateFormat;   
  5. import java.util.Date;   
  6. import java.util.List;   
  7.   
  8. import javax.servlet.ServletOutputStream;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. import org.apache.commons.lang.StringUtils;   
  12.   
  13. import com.smartdot.pdm.business.corp.magazine.bean.MagazineBean;   
  14.   
  15. public class MagazineUtils {   
  16.   
  17.     // 输出TXT   
  18.     public static void writeToTxt(HttpServletResponse response, List list) {   
  19.   
  20.         response.setContentType("text/plain");// 一下两行关键的设置   
  21.         response.addHeader("Content-Disposition",   
  22.                 "attachment;filename=期刊出版社.txt");// filename指定默认的名字   
  23.         BufferedOutputStream buff = null;   
  24.         StringBuffer write = new StringBuffer();   
  25.         String tab = "  ";   
  26.         String enter = "/r/n";   
  27.         MagazineBean magazine;   
  28.         ServletOutputStream outSTr = null;   
  29.         try {   
  30.             outSTr = response.getOutputStream();// 建立   
  31.             buff = new BufferedOutputStream(outSTr);   
  32.             for (int i = 0; i < list.size(); i++) {   
  33.                 magazine = (MagazineBean) list.get(i);   
  34.                 write.append("期刊名称:" + tab);   
  35.                 write.append(delNull(magazine.getChineseName()) + enter);   
  36.                 write.append(enter);           
  37.             }   
  38.             buff.write(write.toString().getBytes("UTF-8"));   
  39.             buff.flush();   
  40.             buff.close();   
  41.         } catch (Exception e) {   
  42.             e.printStackTrace();   
  43.         } finally {   
  44.             try {   
  45.                 buff.close();   
  46.                 outSTr.close();   
  47.             } catch (Exception e) {   
  48.                 e.printStackTrace();   
  49.             }   
  50.         }   
  51.     }   
  52.     public static String delNull(Date date) {   
  53.         String returnStr="";   
  54.         if (date!=null) {   
  55.             SimpleDateFormat sf=new SimpleDateFormat("yyyy年MM月");   
  56.             returnStr=sf.format(date);     
  57.         }    
  58.         return returnStr;   
  59.     }   
  60.     public static String delNull(String str) {   
  61.         String returnStr="";   
  62.         if (StringUtils.isNotBlank(str)) {   
  63.             returnStr=str;         
  64.         }    
  65.         return returnStr;   
  66.     }   
  67. }  
package com.smartdot.pdm.business.corp.magazine.util;

import java.io.BufferedOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;

import com.smartdot.pdm.business.corp.magazine.bean.MagazineBean;

public class MagazineUtils {

	// 输出TXT
	public static void writeToTxt(HttpServletResponse response, List list) {

		response.setContentType("text/plain");// 一下两行关键的设置
		response.addHeader("Content-Disposition",
				"attachment;filename=期刊出版社.txt");// filename指定默认的名字
		BufferedOutputStream buff = null;
		StringBuffer write = new StringBuffer();
		String tab = "  ";
		String enter = "/r/n";
		MagazineBean magazine;
		ServletOutputStream outSTr = null;
		try {
			outSTr = response.getOutputStream();// 建立
			buff = new BufferedOutputStream(outSTr);
			for (int i = 0; i < list.size(); i++) {
				magazine = (MagazineBean) list.get(i);
				write.append("期刊名称:" + tab);
				write.append(delNull(magazine.getChineseName()) + enter);
				write.append(enter);		
			}
			buff.write(write.toString().getBytes("UTF-8"));
			buff.flush();
			buff.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				buff.close();
				outSTr.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	public static String delNull(Date date) {
		String returnStr="";
		if (date!=null) {
			SimpleDateFormat sf=new SimpleDateFormat("yyyy年MM月");
			returnStr=sf.format(date); 	
		} 
		return returnStr;
	}
	public static String delNull(String str) {
		String returnStr="";
		if (StringUtils.isNotBlank(str)) {
			returnStr=str;		
		} 
		return returnStr;
	}
}

 第二种实现:

Java代码 复制代码
  1. // 输出TXT   
  2.     public static void writeToTxt(HttpServletRequest request, List list) {   
  3.         FileOutputStream outSTr = null;   
  4.         BufferedOutputStream Buff = null;   
  5.         String path = request.getSession().getServletContext().getRealPath(   
  6.                 "upordown/down/model/magazinePub.txt");   
  7.         String tab = "  ";   
  8.         String enter = "/r/n";   
  9.         MagazineBean magazine;   
  10.         StringBuffer write ;   
  11.         try {   
  12.             outSTr = new FileOutputStream(new File(path));   
  13.             Buff = new BufferedOutputStream(outSTr);   
  14.             for (int i = 0; i < list.size(); i++) {   
  15.                 magazine = (MagazineBean) list.get(i);   
  16.                 write = new StringBuffer();   
  17.                 write.append("期刊名称:" + tab);   
  18.                 write.append(delNull(magazine.getTenet()) + enter);   
  19.                 write.append(enter);       
  20.                 Buff.write(write.toString().getBytes("UTF-8"));   
  21.             }          
  22.             Buff.flush();   
  23.             Buff.close();   
  24.         } catch (Exception e) {   
  25.             e.printStackTrace();   
  26.         } finally {   
  27.             try {   
  28.                 Buff.close();   
  29.                 outSTr.close();   
  30.             } catch (Exception e) {   
  31.                 e.printStackTrace();   
  32.             }   
  33.         }   
  34.     }  
// 输出TXT
	public static void writeToTxt(HttpServletRequest request, List list) {
		FileOutputStream outSTr = null;
		BufferedOutputStream Buff = null;
		String path = request.getSession().getServletContext().getRealPath(
				"upordown/down/model/magazinePub.txt");
    	String tab = "  ";
		String enter = "/r/n";
		MagazineBean magazine;
		StringBuffer write ;
		try {
			outSTr = new FileOutputStream(new File(path));
			Buff = new BufferedOutputStream(outSTr);
			for (int i = 0; i < list.size(); i++) {
				magazine = (MagazineBean) list.get(i);
			    write = new StringBuffer();
				write.append("期刊名称:" + tab);
				write.append(delNull(magazine.getTenet()) + enter);
				write.append(enter);	
				Buff.write(write.toString().getBytes("UTF-8"));
			}		
			Buff.flush();
			Buff.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				Buff.close();
				outSTr.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

 下载的代码:

Java代码 复制代码
  1. //下载   
  2. public ActionForward downFile(ActionMapping mapping, ActionForm form,   
  3.         HttpServletRequest request, HttpServletResponse response)   
  4.         throws Exception {   
  5.     String name=request.getParameter("filename");   
  6.     // TODO Auto-generated method stub   
  7.     try {   
  8.         String path = request.getSession().getServletContext().getRealPath(   
  9.                 "upordown/down/model/"+name);   
  10.         File file = new File(path);   
  11.         String filename = file.getName();   
  12.   
  13.         // 取得文件的扩展名ext   
  14.         String ext = filename.substring(filename.lastIndexOf(".") + 1)   
  15.                 .toUpperCase();   
  16.   
  17.         InputStream fis = new BufferedInputStream(new FileInputStream(path));   
  18.         byte[] buffer = new byte[fis.available()];   
  19.         fis.read(buffer);   
  20.         fis.close();   
  21.   
  22.         response.reset();   
  23.         response.addHeader("Content-Disposition""attachment;filename="  
  24.                 + new String(filename.getBytes()));   
  25.         response.addHeader("Content-Length""" + file.length()); // 设置返回的文件类型   
  26.         OutputStream toClient = new BufferedOutputStream(response   
  27.                 .getOutputStream()); // 得到向客户端输出二进制数据的对象   
  28.         // 根据扩展名声称客户端浏览器mime类型   
  29.         if (ext.equals("xls"))   
  30.             response.setContentType("application/msexcel");   
  31.         else  
  32.             response.setContentType("application/octet-stream"); // 设置返回的文件类型   
  33.         toClient.write(buffer); // 输出数据   
  34.         toClient.flush();   
  35.         toClient.close();   
  36.     } catch (IOException ex) {   
  37.         ex.printStackTrace();   
  38.         return mapping.findForward("error");   
  39.     }   
  40.     return null;   
  41. }  
	//下载
	public ActionForward downFile(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String name=request.getParameter("filename");
		// TODO Auto-generated method stub
		try {
			String path = request.getSession().getServletContext().getRealPath(
					"upordown/down/model/"+name);
			File file = new File(path);
			String filename = file.getName();

			// 取得文件的扩展名ext
			String ext = filename.substring(filename.lastIndexOf(".") + 1)
					.toUpperCase();

			InputStream fis = new BufferedInputStream(new FileInputStream(path));
			byte[] buffer = new byte[fis.available()];
			fis.read(buffer);
			fis.close();

			response.reset();
			response.addHeader("Content-Disposition", "attachment;filename="
					+ new String(filename.getBytes()));
			response.addHeader("Content-Length", "" + file.length()); // 设置返回的文件类型
			OutputStream toClient = new BufferedOutputStream(response
					.getOutputStream()); // 得到向客户端输出二进制数据的对象
			// 根据扩展名声称客户端浏览器mime类型
			if (ext.equals("xls"))
				response.setContentType("application/msexcel");
			else
				response.setContentType("application/octet-stream"); // 设置返回的文件类型
			toClient.write(buffer); // 输出数据
			toClient.flush();
			toClient.close();
		} catch (IOException ex) {
			ex.printStackTrace();
			return mapping.findForward("error");
		}
		return null;
	}

  客户端调用

Js代码 复制代码
  1. //下载txt   
  2. function  downTxt(){   
  3. window.open ('${pageContext.request.contextPath}/business/magazineAction.do?method=downFile&filename=magazinePub.txt''文件下载''height=300, width=400, top='+(screen.availHeight-300)/2+', left='+(screen.availWidth-400)/2+', toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');   
  4. }   
  5.   
  6.   
  7. //导出txt   
  8. function exportTxt(){   
  9.     var queryForm=document.queryForm;   
  10.     var minRow=queryForm.minRow.value;   
  11.     var maxRow=queryForm.maxRow.value;   
  12.     var totalCnt="${totalCnt}";   
  13.     if(StringUtils.isBlank(totalCnt)){   
  14.         totalCnt=0;   
  15.         }   
  16.  if(Validator.Validate(2)){    
  17.          minRow=parseInt(minRow);   
  18.          maxRow=parseInt(maxRow);          
  19.      // if(maxRow-minRow+1>1000){   
  20.      //     alert("每次最多可以导出1000条数据");   
  21.      //     return ;   
  22.      //     }   
  23.             if(maxRow>totalCnt){   
  24.                 alert("结束记录数不能等大于总记录条数:"+totalCnt);   
  25.             return ;   
  26.             }    
  27.             if(maxRow<minRow){   
  28.                     alert("结束记录数不能小于开始记录数");   
  29.                     return ;   
  30.             }   
  31.         
  32.         req.setRequestMethod("post");   
  33.         var url="${pageContext.request.contextPath}/business/magazineAction.do?method=doExportTxt&orderColumn=${orderColumn}&orderType=${orderType}&queryCondition="+encodeURIComponent('${queryCondition}')+"&maxRow="+maxRow+"&minRow="+minRow+"&isDecorator=false";   
  34.         req.setRequestURL(url);   
  35.         req.setAsync(true);   
  36.         req.setMethodOnSuccess(displayMsg);   
  37.         req.setRequestHeader("Content-Type","text/html;charset=gbk");   
  38.         req.send(null);   
  39.     }   
  40.        
  41. }  

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值