怎样才能点击一个超链接之后, IE就会弹出一个提示框,询问你是要保存还是要打开这个Excel文件。我自己的思路是:点击这个超链接之后,进入到action中:
在action中从数据库中获取数据之后。然后将数据添加到excel中去。
File f = new File("E:\\ContractStat.xls");
workbook = Workbook.createWorkbook(f);
worksheet = workbook.createSheet("record", 0);
这样写的话就将excel的路径写死了,请问用什么方法可以将这个路径写成有选择性的。

解决方案 »

  1.   

    使用javascript给链接的onclick事件加上一个弹出窗口
      

  2.   

    response.setContentType("application/vnd.ms-excel; charset=UTF-8");
    response.setHeader("Content-disposition","attachment;filename="+filename+".xls");
    这样IE就会弹出一个提示框,询问你是要保存还是要打开这个Excel文件,生成文件路径由你自己选啊
      

  3.   

    新增一个按钮,点击按钮就可以将这些值导出到excel点击那个按钮的时候 就进入到action里面查询 这次查询之后直接跳转到新的jsp页面,可以复制
    前面那个,然后在新的jsp里面加上这段话即可:
    java.text.SimpleDateFormat tempDate = new java.text.SimpleDateFormat(
    "yyyyMMddHHmmss");
    String time = tempDate.format(new Date());
    String fileName = "用户基本信息_" + time + ".xls";
    fileName = new String(fileName.getBytes("GBK"), "ISO8859_1");
    response.setHeader("Content-Disposition", "attachment;filename="
    + fileName);response.setDateHeader("Expires", 0);
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Pragma", "no-cache");看你具体的需求吧 这是大概的思路
      

  4.   

    真的不明白啊!这些都是些的js代码,我是在数据库中得到的数据,需要在action中处理的。用js的话数据怎么得到啊!
      

  5.   

    那请问:
    workbook = Workbook.createWorkbook(“路径”);这句代码里面的路径放什么?
    而且这个路径是有选择性的,可以选择电脑的任何盘里面。
      

  6.   

    楼主的按钮点击,效果应该是下载文件,或者是到处excle吧如果是到处excle的话,可参考:
    /**
     * 导出Excel统计结果方法
     */
    public ActionForward doExcel(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    Date date = new Date();
    SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); response.setContentType("application/octet-stream; charset=UTF-8");
    String s = "attachment;filename=" + time.format(date) + ".xls";
    response.setHeader("Content-Disposition", s);
    // 获取统计条件
    String name = request.getParameter("name");// 表格名称
    String tjfs = request.getParameter("tjfs");// 统计类型 1-部门,0-个人
    String xs = request.getParameter("xs");// 检查方式
    String start = request.getParameter("start");// 统计开始时间
    String end = request.getParameter("end");// 统计结束时间
    String mx = request.getParameter("mx");// 是否显示明细
    if (mx == null) {// 初始化为不显示明细
    mx = "0";
    }
    request.setAttribute("tjfs", tjfs);
    request.setAttribute("mx", mx);
    request.setAttribute("xs", xs);
    request.setAttribute("start", start);
    request.setAttribute("end", end); List titles = jzkhtzdService.getTitles(tjfs, mx);// 根据统计类型,是否显示明细获取不同的表头
    List datas = new ArrayList(); // 导出Execl表
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("sheet1"); sheet.setColumnWidth((short) 0, (short) 6000);// 给工作表列定义列宽
    sheet.setColumnWidth((short) 1, (short) 3000);// 给工作表列定义列宽
    HSSFRow row1 = sheet.createRow(0);
    HSSFCellStyle cellStyle = wb.createCellStyle(); // 创建单元格样式
    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐
    cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 HSSFFont font = wb.createFont(); // 设置单元格字体
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    font.setFontName("宋体");
    font.setFontHeight((short) 200);
    cellStyle.setFont(font); if (tjfs != null && tjfs.equals("1") && mx.equals("1")) {// 导出详细信息表格
    datas = jzkhtzdService.getXxTjList(xs, start, end);
    HSSFCell cell = null;
    for (int i = 0; i < titles.size(); i++) {// 设置表头
    cell = row1.createCell((short) i);
    cell.setCellStyle(cellStyle); // 设置表头样式
    String str = (String) titles.get(i);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    cell.setCellValue(str);
    } for (int i = 0; i < datas.size(); i++) {
    Jzkhtj tj = (Jzkhtj) datas.get(i);
    HSSFRow row = sheet.createRow(i + 1);
    HSSFCell dataCell1 = row.createCell((short) 0);
    dataCell1.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell dataCell2 = row.createCell((short) 1);
    dataCell2.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFFont font2 = wb.createFont();
    font2.setColor(HSSFColor.BLUE.index);
    HSSFCellStyle cellStyle2 = wb.createCellStyle();// 创建考核单位单元格显示样式;
    cellStyle2.setFont(font2);
    if (tj.getFlag() != null && tj.getFlag().equals("1")) {// 考核单位
    dataCell1.setCellValue(tj.getTjlx());
    dataCell1.setCellStyle(cellStyle2);
    dataCell2.setCellValue("");
    } else if (tj.getFlag() != null && tj.getFlag().equals("0")) {// 考核人员
    dataCell1.setCellValue("");
    dataCell2.setCellValue(tj.getTjlx());
    } HSSFCell dataCell3 = row.createCell((short) 2);
    dataCell3.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell3.setCellValue(tj.getCounts()); HSSFCell dataCell4 = row.createCell((short) 3);
    dataCell4.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell4.setCellValue(tj.getJljes()); HSSFCell dataCell5 = row.createCell((short) 4);
    dataCell5.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell5.setCellValue(tj.getKfjes());
    }
    try {
    wb.write(response.getOutputStream());
    } catch (IOException e) {
    e.printStackTrace();
    } } else {
    datas = jzkhtzdService.getTjList(tjfs, xs, start, end);// 获取统计所有数据
    HSSFCell cell = null;
    for (int i = 0; i < titles.size(); i++) {// 设置表头
    cell = row1.createCell((short) i);
    cell.setCellStyle(cellStyle); // 设置表头样式
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    String str = (String) titles.get(i);
    cell.setCellValue(str);
    } for (int i = 0; i < datas.size(); i++) {
    Jzkhtj tj = (Jzkhtj) datas.get(i);
    HSSFRow row = sheet.createRow(i + 1);
    HSSFCell dataCell1 = row.createCell((short) 0);
    dataCell1.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell1.setCellValue(tj.getTjlx());
    HSSFCell dataCell2 = row.createCell((short) 1);
    dataCell2.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell2.setCellValue(tj.getCounts());
    HSSFCell dataCell3 = row.createCell((short) 2);
    dataCell3.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell3.setCellValue(tj.getJljes());
    HSSFCell dataCell4 = row.createCell((short) 3);
    dataCell4.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
    dataCell4.setCellValue(tj.getKfjes());
    }
    try {
    wb.write(response.getOutputStream());
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return null;
    }
    至于按钮点击的话,楼主可以考虑ajax提交到后台即可实现下载,或保存excle效果....