表单以EXCEL格式下载(JSP页代码)

页面<a href="downxls.jsp"></a>

 

下载执行页。downxls.jsp

----------------------------------------

<%@ page language="java"  contentType ="text/html;charset=gb2312" %><%@ page import= "java.util.*,org.apache.poi.hssf.usermodel.HSSFWorkbook,org.apache.poi.hssf.usermodel.HSSFSheet,org.apache.poi.hssf.usermodel.HSSFRow,org.apache.poi.hssf.usermodel.HSSFCell,java.io.*,java.io.File,com.jspsmart.upload.SmartUpload" %><%@page import="bh.base.dao.PubDao"%><%@page import="bh.admin.entity.Admin"%><%
    HSSFWorkbook wb  =   new  HSSFWorkbook();
    HSSFSheet sheet  =  wb.createSheet( " sheet1 " );
     HSSFRow row  =  sheet.createRow(( short )0);
    HSSFCell cell1  =  row.createCell(( short )0);
    HSSFCell cell2  =  row.createCell(( short )1);
    HSSFCell cell3  =  row.createCell(( short )2);
    //设置列宽度,2代表第三列,10000表示宽度

    sheet.setColumnWidth((short)2,(short)10000 );
    cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
    
    cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
    
    cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
   
    cell1.setCellValue( " 序号 " );
    cell2.setCellValue( " 用户名 " );
    cell3.setCellValue( " 密码 " );
  
    PubDao pubDao = new PubDao();
    String hql = "from bh.admin.entity.Admin i where 1=1";
    List l = pubDao.queryList(hql);
    Admin admin = new Admin();
    if(l.size()>0){
     for(int i=0;i<l.size();i++){
      admin = (Admin)l.get(i);
      int id = admin.getId();
      String username = admin.getUsername();
      String password = admin.getPassword();
      row = sheet.createRow((short)i+1);
      cell1  =  row.createCell(( short )  0 );
         cell2  =  row.createCell(( short )  1 );
         cell3  =  row.createCell(( short )  2 );
         
         cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
         cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
         cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
     
      cell1.setCellValue(id);
      cell2.setCellValue(username);
      cell3.setCellValue(password);
      
     }
     pubDao.close();
    }
    String sid = request.getSession().getId();
    String filename=application.getRealPath("/")+sid+".xls";
    FileOutputStream fo=new FileOutputStream(filename);
    wb.write(fo);
    fo.close();
     // 新建一个SmartUpload对象
 SmartUpload su = new SmartUpload();
  // 初始化
 su.initialize(pageContext);
  // 设定contentDisposition为null以禁止浏览器自动打开文件,
  //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
  //doc时,浏览器将自动用word打开它。扩展名为pdf时,
  //浏览器将用acrobat打开。
 su.setContentDisposition(null);
  // 下载文件
 su.downloadFile(filename);
  //文件删除 

 File f = new File(filename);
 boolean flag = false;
 if(f.exists()){
  flag = f.delete();
  if(flag){
   System.out.println(filename+"文件删除成功!!!");
  }else{
   System.out.println(filename+"文件删除失败!!!");
  }
 }else{
  System.out.println("文件找不到!!");
 }
 %>

注:<%%>标签外不能加空格·回车·换行等等。

JSP面中,你可以利用Java的库如Apache POI来创建Excel文件,并通过HTTP响应将文件发送给浏览器下载。以下是一个简单的步骤: 1. 引入依赖:首先,在项目中添加Apache POI的依赖,例如在Maven中添加`<dependency>`到pom.xml: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>latest version</version> </dependency> ``` 2. 创建Excel数据:生成一个HSSFWorkbook对象,然后添加Sheet并填充数据。 ```java // 导入相关的POI包 import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; // 在服务器端的Java代码中操作 try { Workbook workbook = new XSSFWorkbook(); // 或者Workbook如果需要支持旧版本的xls文件 Sheet sheet = workbook.createSheet("Table"); Row headerRow = sheet.createRow(0); Cell cell; for (int i = 0; i < formFields.length; i++) { cell = headerRow.createCell(i); cell.setCellValue(formFields[i].getName()); // 假设formFields数组包含了所有要写入Excel的数据 } // 将数据写入工作簿 // ... // 创建输出流并设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=export.xlsx"); OutputStream outputStream = response.getOutputStream(); // 写入工作簿到输出流 workbook.write(outputStream); // 关闭资源 workbook.close(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } ``` 3. 在JSP面中调用这个操作:通常会在后台Servlet或者JavaBean中处理这部分逻辑,然后通过`request.getRequestDispatcher()`返回一个新的视图(这里就是处理完并生成了Excel文件),让浏览器去下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值