基于java一个简单的将jsp界面数据以excel文件导出方法的实现

MyEclipse笔记 专栏收录该内容
4 篇文章 0 订阅

有的时候网页需要导出页面所有的数据为excel文件,那么问题来了,方法千千万万,要怎么做呢?

我在这里使用的是Strust接收jsp界面action请求,后台调用数据库数据输入文件的方法,如果你不知道怎么导入Strust,

请百度。。。话不多说直接撸代码:

 <form action="writeExcel_write.do" method="post">
  <input type="submit" value="导出为xml文件"/>
  </form>

没错,jsp页面的代码很简单。。。当前我的网页调用的是数据库某个表的数据,jsp界面是这样的:

也就三个数据,那接下来是Strust的配置:

看清楚,这里我调用的是<constant name="struts.action.extension" value="do"/>

这个value=do很重要,一般很多人都会漏掉!

下面是web.xml里的配置:

这里需要提一下,代码中<url-pattern>*.do</url-pattern>接收的拦截是*.do,这意味着jsp的action要写成xxx.do

本文章开头有写,可以返回去看。

接下来就是方法了,文件名为WriteExcelAction.java,直接放代码,有点长以免你写的蛋疼。

package com.red.action;

import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 第三方插件导出Excel
 * @author Dylan
 */
public class WriteExcelAction extends ActionSupport {
  
	
	HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();

    public void writeExcel() throws RowsExceededException, WriteException, IOException {
    	OutputStream os = response.getOutputStream();// 取得输出流
        response.reset();// 清空输出流
        response.setHeader("Content-disposition", "attachment; filename=diseaseList.xls");// 设定输出文件头
        response.setContentType("application/msexcel");// 定义输出类型

        WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
        String tmptitle = "测试数据"; // 标题    	       	        
        WritableSheet sheet = wbook.createSheet("病症名单",0);//或者rwb.getSheet(0)获取第一个区域
        
       
        try {
            //2. 连接数据库
            Connection conn=null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            
            conn=DbUtil.getConn();
            String sql = "select disCode,disName from disease";
            
            ps = conn.prepareStatement(sql);// SQL预处理 
            rs = ps.executeQuery();
            //ResultSet是数据库中的数据,将其转换为List类型
            List<Disease> list = new ArrayList<Disease>();
            while(rs.next()){
            	Disease stu = new Disease();
                stu.setDisCode(rs.getInt("disCode"));
                stu.setDisName(rs.getString("disName"));
                list.add(stu);
            }
            ps.close(); 
            conn.close();         
            for(int i = 0; i<list.size(); i++){
            	 //Number对应数据库的int类型数据
            	sheet.addCell(new jxl.write.Label(0,0,"病症号"));
                //Label对应数据库String类型数据
                sheet.addCell(new jxl.write.Label(1,0,"病症名"));
                sheet.addCell(new jxl.write.Number(0,i+1,list.get(i).getDisCode()));
                //Label对应数据库String类型数据
                sheet.addCell(new jxl.write.Label(1,i+1,list.get(i).getDisName()));
                
            }
                   
            wbook.write();
                  
             
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
        	wbook.close();
        	os.close();
        }
    

    }
}

就是这样,这么一来就大功告成,回到jsp界面点击之前做好的按钮看看结果:

这里我选择打开 ,看看里面是否和jsp显示数据库的数据一致:

 

搞定!数据库和get,set的方法我就不贴了,因人而异!就是这么简单

如果碰到404等问题的,可以去看看我之前写的解决方法:引入Strust2后jsp无法调用action报错404的问题

转载记得署名哦。

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值