Java poi生成 Excel

    /**
     * 文件導出
     * 
     * @param request
     * @param response
     * @throws IOException
     */
    public void exportData2(HttpServletRequest req,HttpServletResponse res) throws IOException{
        String startTime = req.getParameter("startTime");
        String endTime = req.getParameter("endTime");
        String yjjb = req.getParameter("yjjb");
        String cdbh = req.getParameter("cdbh");
        List<DynaBean> dataDybList = dao.queryDataListAll(startTime, endTime, cdbh, yjjb);
        JSONArray dataList = JSONArray.fromObject(dataDybList);
        String sysFolder = "";
        List<SystemCode> codeList = SystemCodesCache.getInstance().getSystemCodeList("XNML");
        if (!BeanUtils.emptyCollection(codeList)) {
            for (SystemCode code : codeList) {
                String bm = code.getCodeId();
                if(bm.equals("ROOT")){
                    sysFolder = code.getValue();
                    break;
                }
            }
        }
        String saveFilePath = sysFolder +"/SandWeather";
        String saveName = "XJSandWeather"+DateUtils.format(new Date(), "yyyyMMddHH")+".xls";
        
        List<String> headerEn = Arrays.asList("CSBH","CSMC","STARTTIME","ENDTIME","SJLX","MINAQI","MAXAQI","CXSJ","YJXQ","YBCSRQ");//字段
        List<String> headerZh = Arrays.asList("城市編號","城市名稱","開始時間","結束時間","預報模式","最小值","最大值","持續時間","預警等級","預警批次");//字段名稱
        
        File fPath = new File(saveFilePath);
        if(!fPath.exists()){
            fPath.mkdirs();
        }
        String absPath = saveFilePath+File.separator+saveName;
        if(JXLExcelUtil.WriteDataToExcel(absPath, headerZh, headerEn, dataList)){
                try{
                    String fileName = "文件名.xls";    //輸出頁面文件名稱
                    // 設置輸出的格式
                    res.reset();
                    res.setContentType("bin");
                    res.addHeader("Content-Disposition", "attachment; filename=\"" + new String((fileName).getBytes(),"ISO-8859-1") + "\"");
                    // 循環取出流中的數據
                    InputStream inStream = new FileInputStream(absPath);
                    byte[] b = new byte[100];
                    int len;
                    
                    try {
                        while ((len = inStream.read(b)) > 0)
                            res.getOutputStream().write(b, 0, len);
                        inStream.close();
                    }catch (IOException e2) {
                        logger.error("下載文件失敗!" + e2.getMessage());
                        e2.printStackTrace();
                    }
                }catch(Exception e){
                    logger.error("下載文件失敗!" + e.getMessage());
                    e.printStackTrace();
                }
            }
    }

以流的形式傳到前臺    ;

 接收的參數,和查詢的數據,文件名    等自行修改   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章