具体没有实现过,提供一个思路。使用sqlplus,把数据取出来,导出为CSV格式就可以了。
或者干脆用比较土的办法,先从数据库中取出数据。
再把你的数据在Java中组织一下,输出到该Excel文件中,还是以CSV格式组织就可以了。
呵呵。

解决方案 »

  1.   

    大哥,快帮个忙吧。老板催得厉害哎
    其实就是一个怎样把后台返回的一个结果集写到本地的一个excel文件
      

  2.   

    这个简单啊,
    你的下载按钮的时间就需要完成如下几个步骤:
    (1):从数据库中取到你要的数据
    (2):通过HttpServletResponse的对象取得PrintWriter
    (3):写文件就行
      

  3.   

    多谢各位帮忙:
    我的msn:[email protected]
      

  4.   

    使用apache的poi 
    写excel
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet();
    workbook.setSheetName(0, xlsName, HSSFWorkbook.ENCODING_UTF_16);
    HSSFRow row = sheet.createRow((short) 0);//创建新行HSSFCell cell;//创建列
    cell = row.createCell((short) (0));
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("姓名");
    cell = row.createCell((short) (0));
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("姓别");HSSFRow row1 = sheet.createRow((short) 1);//创建新行
    cell = row.createCell((short) (0));
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("小明");
    cell = row.createCell((short) (0));
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("男");FileOutputStream f=new FileOutputStream("c:\\aa.xls");创建文件输出流workbook.write(f);
    f.flush();
    f.close();
    ----------------
    姓名 性别
    小明 男
    ----------------
    详细操作请参考API文档
      

  5.   

    你自己改一改就可以了~!去网上下载个poi去
      

  6.   

    /*---------------------------------------
     *   下载维修记录到excel表格
     ---------------------------------------*/
    public ActionForward download(ActionMapping actionMapping,
                                  ActionForm actionForm,
                                  HttpServletRequest httpServletRequest,
                                  HttpServletResponse httpServletResponse) throws
        ClassNotFoundException, IllegalAccessException, InstantiationException,
        IOException, ServletException {    if (! (Validate.execute(httpServletRequest, "MANRDGET"))) {
            return null;
        }
        String msg=null;
        String begin_date="";
        String end_date="";
        ManrdgetActionForm manrdgetActionForm = (ManrdgetActionForm) actionForm;
        ManrdgetDao manrdgetDao = new ManrdgetDao();
        begin_date=manrdgetActionForm.getBegin_date();
        end_date=manrdgetActionForm.getEnd_date();
        
        Collection col = manrdgetDao.selectWH(begin_date,end_date);//返回的col(里面就是col.add(databean)很多个bean)下边有说明
        if (col.size() == 0) {
          msg="yes";//有记录
        }else{
          msg="no";//没有记录
         }
        
        httpServletRequest.setAttribute("msg", msg);
        return actionMapping.findForward("MANRDGET");
      }
    这就是返回的col:
               while (rs.next()) {
               ManrdgetBean manrdgetBean = new ManrdgetBean();
               manrdgetBean.setGroup_acct(rs.getString("group_acct"));
               manrdgetBean.setFault_class_chin(rs.getString("fault_class_chin"));
               manrdgetBean.setProm_desc(rs.getString("prom_desc"));
               manrdgetBean.setDeal_desc(rs.getString("deal_desc"));
               col.add(manrdgetBean);
               }我现在要做的就是怎么能把这些数据直接保存在客户端,excel文件
      

  7.   

    上面的一些兄弟说的很对,生成到客户端的思路:先在服务器端生成这个文件,然后在下载,
    下面是我的部分代码,从数据库中取数据就不列出来了,主要列出怎么样生成这个文件到服务器端,然后在下载到客户端,问题就解决了...
    code :
    ------------------------------------------
    Collection list = null;
    list = reportStatisticService.GetOrganizationReportStatistic(organizationId,selectYear,selectMonth,bizType);从数据库中取数据 if(list.size() != 0 && !(list.isEmpty()))
    {
    ReportListForm reportListFormExcel = null;
    Calendar calender = Calendar.getInstance();
    calender.setTimeInMillis(System.currentTimeMillis());
    String year=  String.valueOf(calender.get(Calendar.YEAR));
    String month = String.valueOf(calender.get(Calendar.MONTH)+1);
    String hour = String.valueOf(calender.get(Calendar.HOUR_OF_DAY));
    String minute = String.valueOf(calender.get(Calendar.MINUTE));
    String second = String.valueOf(calender.get(Calendar.SECOND));
    if(month.length()<2)
    {
    month = "0"+month;
    }
    String day = String.valueOf(calender.get(Calendar.DAY_OF_MONTH));
    if(day.length()<2)
    {
    day = "0"+day;
    }
    if(hour.length()<2)
    {
    hour = "0"+hour;
    }
    if(minute.length()<2)
    {
    minute = "0"+minute;
    }
    if(second.length()<2)
    {
    second = "0"+second;
    }
    String date = year+"/"+month+"/"+day+"  "+hour+":"+minute+":"+second;
    String strFileName = "";
    String strOrgCode = reportStatisticService.GetOrganizationCodeByOrganizationId(organizationId);
    strFileName = strOrgCode+"-"+year+month+day+".xls";
    String realpath = request.getRealPath("/")+"/"+"\\generatereport\\"+strFileName;
    File file = new File(realpath);
    WritableWorkbook wwb = Workbook.createWorkbook(file);
    WritableSheet sheet = wwb.createSheet(strFileName.substring(0,(strFileName.length()-4)),0);
    sheet.setColumnView(0,35);
    WritableFont font1 = new WritableFont(WritableFont.TIMES, 10);
    WritableCellFormat format1 = new WritableCellFormat(font1);
    format1.setAlignment(jxl.format.Alignment.CENTRE);
    format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
    format1.setBorder(Border.ALL, BorderLineStyle.THIN);
    Label labeldate = new Label(0,1,"报表生成时间:"+date,format1);
    Label label1 = new Label(0,2,"报送机构名称",format1);
    Label label2 = new Label(1,2,"报送年度",format1);
    Label label3 = new Label(2,2,"报送期数",format1);
    Label label4 = new Label(3,2,"报表总数",format1);
    Label label5 = new Label(4,2,"未填报",format1);
    Label label6 = new Label(5,2,"已填报",format1);
    Label label7 = new Label(6,2,"已汇总",format1);
    Label label8 = new Label(7,2,"已校验",format1);
    Label label9 = new Label(8,2,"已复核",format1);
    Label label10 = new Label(9,2,"被汇总",format1);
    Label label11 = new Label(10,2,"已审核",format1);
    sheet.addCell(labeldate);
    sheet.addCell(label1);
    sheet.addCell(label2);
    sheet.addCell(label3);
    sheet.addCell(label4);
    sheet.addCell(label5);
    sheet.addCell(label6);
    sheet.addCell(label7);
    sheet.addCell(label8);
    sheet.addCell(label9);
    sheet.addCell(label10);
    sheet.addCell(label11);
    int row = 3;
    //int column = 0;
    for(Iterator iterator = list.iterator();iterator.hasNext();)
    {
    reportListFormExcel = new ReportListForm();
    reportListFormExcel = (ReportListForm)iterator.next();

    Label labelA = new Label(0,row,reportListFormExcel.getOrgName(),format1);
    Label labelB = new Label(1,row,reportListFormExcel.getSelectYear(),format1);
    Label labelC = new Label(2,row,reportListFormExcel.getSelectMonth(),format1);
    Label labelD = new Label(3,row,String.valueOf(reportListFormExcel.getIntReportCount()),format1);
    Label labelE = new Label(4,row,String.valueOf(reportListFormExcel.getStatusType_1()),format1);
    Label labelF = new Label(5,row,String.valueOf(reportListFormExcel.getStatusType_2()),format1);
    Label labelG = new Label(6,row,String.valueOf(reportListFormExcel.getStatusType_3()),format1);
    Label labelH = new Label(7,row,String.valueOf(reportListFormExcel.getStatusType_4()),format1);
    Label labelI = new Label(8,row,String.valueOf(reportListFormExcel.getStatusType_5()),format1);
    Label labelJ = new Label(9,row,String.valueOf(reportListFormExcel.getStatusType_6()),format1);
    Label labelM = new Label(10,row,String.valueOf(reportListFormExcel.getStatusType_7()),format1);
    sheet.addCell(labelA);
    sheet.addCell(labelB);
    sheet.addCell(labelC);
    sheet.addCell(labelD);
    sheet.addCell(labelE);
    sheet.addCell(labelF);
    sheet.addCell(labelG);
    sheet.addCell(labelH);
    sheet.addCell(labelI);
    sheet.addCell(labelJ);
    sheet.addCell(labelM);
    row += 1;
    }
    sheet.setProtected(true);
    wwb.setProtected(true);
    wwb.write();
    wwb.close();
    reportListForm.setSelectYear(String.valueOf(selectYear));
    reportListForm.setSelectMonth(String.valueOf(selectMonth));
    String downloadpath = request.getContextPath()+"\\generatereport\\"+strFileName;
    try
    {
                           下载Excel文件...
    response.sendRedirect(downloadpath);
    return null;
    }catch(IOException ex)
    {
    ex.printStackTrace();
    }
      

  8.   

    各位大哥小弟:
    这么简单的问题怎么就没有人会呢??
    强调一点:我要把返回来的数据集合直接写在本地excel文件里面不需要在服务器端
      

  9.   

    顶下 
    用PrintWriter怎么写excel zxm_dgcstars() 能仔细说下吗?
      

  10.   

    呵呵,直接修改HTML的输出类型就可以了
      

  11.   

    当然,得保证用户使用的是MS的IE浏览器、MS的WINDOWS操作系统、并安装有MS的OFFICE哦。
      

  12.   

    哈哈,csv文件已经得到了,我再看看能不能得到xls。
    再次感谢各位的帮忙!哈哈
      

  13.   

    如何让客户端由JSP生成的IE表格转为EXCEL文件啊。