JAVA导出EXCEL

/*常常遇到这样的情况,页面显示的只是我们要导出的部分数据。而真正要导出生成EXCEL表的是我们取出来的List<实例对象>
*下面是Java导出excel方法和导出文件名乱发问题的方法
*/
//
导出Excel public boolean exportExcel(List<Equipment> list) { try { OutputStream os = getResponse().getOutputStream();// 取得输出流 getResponse().reset();// 清空输出流 String time = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String fileName = encodeFilename("设备信息报表", getRequest()); // fileName = URLDecoder.decode(fileName, "UTF-8"); getResponse().setHeader("Content-disposition", "attachment; filename=" + fileName + "_" + time + ".xls");// 设定输出文件头 getResponse().setContentType("application/msexcel");// 定义输出类型 WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件 // String tmptitle = "设备信息报表"; // 标题 WritableSheet wsheet = wbook.createSheet("设备信息报表", 0); // sheet名称 // 设置excel标题 /* * WritableFont wfont = new WritableFont(WritableFont.ARIAL, * 16,WritableFont.BOLD, * false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK); * WritableCellFormat wcfFC = new WritableCellFormat(wfont); * wcfFC.setBackground(Colour.AQUA); wsheet.addCell(new Label(1, 0, * tmptitle, wcfFC)); */ WritableFont wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); new WritableCellFormat(wfont); String[] equipTitle = { "设备编号", "设备品牌", "柜员编号", "安装地址类型", "布局", "启用日期", "是否安装视频监控", "网络IP", "机构ID", "管理员", "管理员电话", "工程师", "工程师电话", "维护起始日期", "设备归属地", "设备类型", "设备型号", "安装地址", "设备序列号", "放置形式", "物理安装日期", "是否安装ups", "设备来源", "电子安装日期", "终端版本号" }; String[] equipProperties = { "Id", "EquipBrand", "EmployeeId", "InstallAddressType", "Layout", "StartDate1", "IsInstallVideo", "NetIp", "OrganizationId", "Manager", "Engineer", "MaintainStartDate1", "Area", "EquipType", "EquipModel", "InstallAddress", "EquipSequence", "PlaceType", "InstallDate1", "IsInstallUPS", "EquipSource", "OrganizationName", "ManagerTelephone", "EngineerTelephone", "EleInstallDate1", "EquipVersion" }; // 生成列头 for (int i = 0; i < equipTitle.length; i++) { wsheet.addCell(new Label(i, 0, equipTitle[i])); } // 添加内容 for (int i = 0; i < list.size(); i++) { for (int j = 0; j < equipProperties.length; j++) { String properties = ".get" + equipProperties[0] + "()"; wsheet.addCell(new Label(0, i + 1, list.get(i) + properties)); } } // 主体内容生成结束 wbook.write(); // 写入文件 wbook.close(); os.close(); // 关闭流 return true; } catch (Exception ex) { ex.printStackTrace(); return false; } }
public String encodeFilename(String filename, HttpServletRequest request) {  
      /** 
       * 获取客户端浏览器和操作系统信息 
       * 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar) 
       * 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 
       */  
      String agent = request.getHeader("USER-AGENT");  
      try {  
        if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {  
          String newFileName = URLEncoder.encode(filename, "UTF-8");  
          newFileName = StringUtils.replace(newFileName, "+", "%20");  
          if (newFileName.length() > 150) {  
            newFileName = new String(filename.getBytes("GB2312"), "ISO8859-1");  
            newFileName = StringUtils.replace(newFileName, " ", "%20");  
          }  
          return newFileName;  
        }  
        if ((agent != null) && (-1 != agent.indexOf("Mozilla")))  
          return MimeUtility.encodeText(filename, "UTF-8", "B");  
    
        return filename;  
      } catch (Exception ex) {  
        return filename;  
      }  
    }

 

 

 

posted on 2014-07-28 10:28  HI,你的蚊香  阅读(133)  评论(0)    收藏  举报