请问一个写文件并下载的问题 :
一个查询结果画面 有个下载按钮 点击后将页面中的数据以csv的形式保存下来 请问谁会阿?

解决方案 »

  1.   

    给你一个代码片段 你自己改改就可以了public ActionForward exportExcel(ActionMapping mapping,ActionForm form,
    HttpServletRequest request,HttpServletResponse response) throws IOException, RowsExceededException, WriteException, ParseException{ int teamID = Integer.parseInt(request.getParameter("teamID"));
    int processID = Integer.parseInt(request.getParameter("processID"));
    int workID = Integer.parseInt(request.getParameter("workID"));
    String startDate = request.getParameter("startDate");
    String endDate = request.getParameter("endDate");
    String statistic = request.getParameter("statistic");
    String pinNO = request.getParameter("pinNO");

    List<TUserWork> userWorkList = userWorkService.getUserWorkListByConditions(teamID, startDate, endDate, processID, workID, Utils.dateToString(new Date()), "1900-01-01", pinNO);

    String teamName = "";

    TUserInfo userInfo = (TUserInfo)request.getSession().getAttribute("userInfo");
    if(null != userInfo) teamName = userInfo.getPinNO();

    String curDateName=Utils.getExprotPeriod(startDate, endDate);

    OutputStream out = null;
    response.reset();
    response.setContentType("application/x-msdownload");

    if(Utils.isEmpty(statistic))
    {
    response.setHeader("Content-Disposition", "attachment;filename="
    + teamName+"_"+curDateName+".csv");

    out = response.getOutputStream();
    out.flush();

    List<UserWorkStat> userWorkStatList = CommonService.getUserWorkStatList(userWorkList);
    String str = CommonService.getContent(userWorkStatList,curDateName);
    //String str = "2008/12/26 03:00:00";
    ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());
    int len = 0;
    byte[] buffer = new byte[1024];
    while ((len = bis.read(buffer, 0, 1024)) != -1 & bis != null)
    {
    out.write(buffer, 0, len);
    }

    out.flush();
    out.close();
    }else{
    response.setHeader("Content-Disposition", "attachment;filename="
    + teamName+"_"+curDateName+".xls");

    out = response.getOutputStream();
    out.flush();


    int totalPerson = userWorkService.getTotalPerson(teamID, startDate, endDate, processID, workID, Utils.dateToString(new Date()), "1900-01-01", pinNO);
    List<UserWorkStatRep> userWorkStatRepList = CommonService.getUserWorkStatRepList(userWorkList, dataStatService, totalPerson);
    List<NormDataStat> normDataStatList = CommonService.getNormDataStatList(userWorkList, normDataService, dataStatService);
    List<ManageRecordStat> manageRecordStatList = CommonService.getManageRecordStatList(userWorkList);

    CommonService.writeFileToExcelRep(out, userWorkStatRepList, normDataStatList, manageRecordStatList);

    out.flush();
    out.close();
    }

    return null;
    }
      

  2.   

    上边是我以前用到的一个下载成csv格式文件的代码。
    你就取下载设置和写文件过程就可以了。
      

  3.   

    String str = "1,2,3,4,5,6"+"\r\n"+"11,22,33,44,55,66";//用逗号把字段连接起来,换行用"\r\n"
    response.setContentType("application/octet-stream");
                response.setHeader("Content-disposition", "attachment; filename=test.csv");
                response.setCharacterEncoding("gb2312");
                PrintWriter out = response.getWriter();
                out.write(str);
                out.flush();
                out.close();