zoukankan      html  css  js  c++  java
  • java Servlet导出数据到Excel文件

    package com.lbc.excel.servlet;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.lbc.entity.EquipmentLib;
    import com.lbc.entity.OaUsers;
    import com.lbc.service.AssetServiceDao;
    import com.lbc.service.AssetServiceDaoImpl;
    
    import youngPackage.db.YoungRepository;
    
    /**
     * Servlet implementation class ExportExcelServlet
     */
    public class ExportExcelServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ExportExcelServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("---------------------------------ExportExcelServlet----------------------------------");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            YoungRepository youngdb = (YoungRepository)request.getSession().getAttribute("oa_db");
            OaUsers user = (OaUsers)request.getSession().getAttribute("oa_user");
            String eaPer = (String)request.getSession().getAttribute("currentUserEaPerGrade");
            if(youngdb == null){
          	youngdb = new YoungRepository();
            }
            AssetServiceDao asd = new AssetServiceDaoImpl(youngdb);
            List<EquipmentLib> list = new ArrayList<EquipmentLib>();
            if("EA1004".equals(eaPer)){
                list = asd.getElByUsernameOrDepartmentOrManager(user.getUsername(),"","ALL","1");
            }else if("EA1002".equals(eaPer)){
                list = asd.getElByUsernameOrDepartmentOrManager("",user.getDepartment(),"","1");
            }
            
            String fileName = "Excel-" + System.currentTimeMillis() + ".xls";//设置导出的文件名称
            StringBuffer sb = new StringBuffer(this.gettable(list));//将表格信息放入内存
            String contentType = "application/vnd.ms-excel";//定义导出文件的格式的字符串
            String recommendedName = new String(fileName.getBytes(),"iso_8859_1");//设置文件名称的编码格式
            response.setContentType(contentType);//设置导出文件格式
            response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName );//
            response.resetBuffer();
            //利用输出输入流导出文件
            ServletOutputStream sos = response.getOutputStream();
            sos.write(sb.toString().getBytes());
            sos.flush();
            sos.close();
    	}
        private String gettable(List<EquipmentLib> list ){
        	StringBuffer table = new StringBuffer();
        	if(list != null && list.size() > 0){
        		table.append("<table border='1'><tbody><tr style='height: 35px;background-color:#fff1cc;'><th>序号</th><th>资产类别</th><th>资产名称</th><th>资产数量</th>");
                table.append("<th>所在部门</th><th>使用人</th><th>状态</th><th>购置日期</th><th>开始使用日期</th>");
                table.append("<th>使用年限</th><th>原值</th><th>品牌</th><th>规格型号</th><th>备注</th></tr>");
                String temp = "";
            	for(int i = 0 ; i < list.size() ; i++){
            		EquipmentLib el = list.get(i);
            		if((i+1)%2 == 0){
            			table.append("<tr style='height: 35px;' bgcolor='#EDEDED'>");
            		}else{
            			table.append("<tr style='height: 35px;'>");
            		}
            		table.append("<td align='center'>"+(i+1)+"</td>");
            		table.append("<td align='center'>"+el.getFamily()+"</td>");
            		table.append("<td align='center'>"+el.getName()+"</td>");
            		table.append("<td align='center'>"+el.getAmount()+"</td>");
            		table.append("<td align='center' style='color:red;'>"+el.getDepartment()+"</td>");
            		table.append("<td align='center'>"+el.getCurrentUserName()+"</td>");
            		if("2".equals(el.getStatus())){
            			temp = "资产转移中";
            		}else if("4".equals(el.getStatus())){
            			temp = "报废审核中";
            		}else {
            			temp = "正常使用";
            		}
            		table.append("<td align='center'>"+temp+"</td>");
            		table.append("<td align='center'>"+el.getPurchaseDate()+"</td>");
            		table.append("<td align='center'>"+el.getStartUseDate()+"</td>");
            		table.append("<td align='center'>"+el.getUseLife()+"</td>");
            		table.append("<td align='center'>"+el.getValue()+"</td>");
            		if(el.getBrand() == null ){
            			table.append("<td align='center'></td>");
            		}else{
            			table.append("<td align='center'>"+el.getBrand()+"</td>");
            		}
            		
            		if(el.getSpecifications() == null ){
            			table.append("<td align='center'></td>");
            		}else{
            			table.append("<td align='center'>"+el.getSpecifications()+"</td>");
            		}
            		
            		if(el.getRemark() == null ){
            			table.append("<td align='center'></td>");
            		}else{
            			table.append("<td align='center'>"+el.getRemark()+"</td>");
            		}
            		
            	}
            	table.append("</tr></tbody></table>");
            }
        	return table.toString();
        }
    }
    

      

  • 相关阅读:
    Nginx动静分离经典案例配置
    Nginx实现HTTP反向代理配置
    mac 使用brew安装nginx 各种命令
    nginx 启动报错Error: undefined method `named' for #<OptionParser:0x00007fdd090802d0>
    【Java多线程】PriorityBlockingQueue源码分析 (二十五)
    【Java】PriorityQueue 源码分析
    【Java多线程】SynchronousQueue源码分析(二十四)
    【Java多线程】线程最快累加方案(二十三)
    【Java多线程】线程池ThreadPoolExecutor实现原理(二十二)
    【Java多线程】读写锁(ReadWriteLock)(二十一)
  • 原文地址:https://www.cnblogs.com/xrhou12326/p/4313898.html
Copyright © 2011-2022 走看看