Java导出txt

 第一种形式,是以流的开式直接response,适用于数据量不是很大的情况下。 


Java代码

    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;  
        }  
    }  

第二种形式,是先将要下载的文件写到后台的一个文件或者excel 中,然后再进行下载。 


    // 输出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代码

    //下载  
    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代码

    //下载txt  
    function  downTxt(){  
    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');  
    }  
      
      
    //导出txt  
    function exportTxt(){  
        var queryForm=document.queryForm;  
        var minRow=queryForm.minRow.value;  
        var maxRow=queryForm.maxRow.value;  
        var totalCnt="${totalCnt}";  
        if(StringUtils.isBlank(totalCnt)){  
            totalCnt=0;  
            }  
     if(Validator.Validate(2)){   
             minRow=parseInt(minRow);  
             maxRow=parseInt(maxRow);         
         // if(maxRow-minRow+1>1000){  
         //     alert("每次最多可以导出1000条数据");  
         //     return ;  
         //     }  
                if(maxRow>totalCnt){  
                    alert("结束记录数不能等大于总记录条数:"+totalCnt);  
                return ;  
                }   
                if(maxRow<minRow){  
                        alert("结束记录数不能小于开始记录数");  
                        return ;  
                }  
           
            req.setRequestMethod("post");  
            var url="${pageContext.request.contextPath}/business/magazineAction.do?method=doExportTxt&orderColumn=${orderColumn}&orderType=${orderType}&queryCondition="+encodeURIComponent('${queryCondition}')+"&maxRow="+maxRow+"&minRow="+minRow+"&isDecorator=false";  
            req.setRequestURL(url);  
            req.setAsync(true);  
            req.setMethodOnSuccess(displayMsg);  
            req.setRequestHeader("Content-Type","text/html;charset=gbk");  
            req.send(null);  
        }  
          
    }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值