将数据库查询结果生成excel

package com.dong.util;


import java.io.FileOutputStream;
import java.io.IOException;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;



public class TestExcel{
    

	//显示的导出表的标题
    private String title;
    //导出表的列名
    private String[] cloName ;
    
    private List<Object[]>  dataList = new ArrayList<Object[]>();
    
    HttpServletResponse  response;
    
    //构造方法,传入要导出的数据
    public TestExcel(String title,String[] cloName,List<Object[]>  dataList){
        this.dataList = dataList;
        this.cloName = cloName;
        this.title = title;
    }
            
    /*
     * 导出数据
     * */
    public void export() throws Exception{
        try{
        	HSSFWorkbook workbook = new HSSFWorkbook();  // 创建工作簿对象
        	HSSFSheet sheet = workbook.createSheet(title); // 创建工作表sheet
            
            
            // 定义所需列数
           int columnNum = cloName.length;
           Row rowRowName = sheet.createRow(0); // 创建行
            // 将列头设置到sheet的单元格中
            for(int n=0;n<columnNum;n++){
                Cell  cellRowName = rowRowName.createCell(n);  //创建列头对应个数的单元格
                HSSFRichTextString text = new HSSFRichTextString(cloName[n]);
                cellRowName.setCellValue(text);  //设置列头单元格的值              
            }
            
            //将查询出的数据设置到sheet对应的单元格中
            for(int i=0;i<dataList.size();i++){
                Object[] obj = dataList.get(i);//遍历每个对象
                Row row = sheet.createRow(i+1);//创建所需的行数
                for(int j=0; j<obj.length; j++){
                    HSSFCell  cell = null;   //设置单元格的数据类型
                    if(j == 0){
                        cell = (HSSFCell) row.createCell(j);
                        cell.setCellValue(i+1);    
                    }else{
                        cell = (HSSFCell) row.createCell(j);
                        if(!"".equals(obj[j]) && obj[j] != null){
                            cell.setCellValue(obj[j].toString()); //设置单元格的值
                        }
                    }
                                        
                }
            }
            if(workbook !=null){
                try
                {
                    FileOutputStream out = new FileOutputStream("D:/" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString() +".xlsx");
                    workbook.write(out);
                    out.close();
                    System.out.println("ok");
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

        }catch(Exception e){
            e.printStackTrace();
        }
        
    }
}

查询数据

package com.dong.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hnrj.util.JDBCUtil;

public class UserDao {
	  public List<Object[]> getUser() throws SQLException {
	        //获取连接对象
	        //执行SQL语句的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中
			Connection conn = null;
			ResultSet rs =  null;
			PreparedStatement st = null;
			List<Object[]>  dataList = new ArrayList<Object[]>();
			Object[] objs = null;
			try {
				conn = JDBCUtil.getConn();
				//连接对象conn调用createStatement()方法,创建一个执行SQL语句的对象st
				  st = conn.prepareStatement("select * from user");
//				  st.setString(1, name);
//				  st.setString(2, id);
				  rs = st.executeQuery();
				  String[] cloName = new String[]{"id","name","password","gender","phone","email","role","img","nicename","regist_time"};
				  
				   while(rs.next()){
					   objs = new Object[cloName.length];
					   objs[0]=rs.getInt("id");
					   objs[1]=rs.getString("username");
					   objs[2]=rs.getString("password");
					   objs[3]=rs.getInt("gender");
					   objs[4]=rs.getString("phone");
					   objs[5]=rs.getString("email");
					   objs[6]=rs.getInt("role");
					   objs[7]=rs.getString("img");
					   objs[8]=rs.getString("nickname");
					   objs[9]=rs.getString("regist_time");
					   dataList.add(objs);
		            }
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				JDBCUtil.close(rs, st, conn);
			}
			return dataList; 
	    }
}

jdbc

package com.dong.util;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hnrj.credit.entity.User;

public class JDBCUtil {
	
	 private static final String DRIVER="com.mysql.cj.jdbc.Driver";
     private static final String URl="jdbc:mysql://localhost:3306/esport";
     private static final String  DBUSER="root";
     private static final String  DBPWD="123456";

     static{
         try {
             //注册驱动
             Class.forName(DRIVER);
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
     }
			
		
	
	 //获取mysql数据库连接
	public static Connection getConn(){
		Connection conn = null;
			try {
				conn = DriverManager.getConnection(URl, DBUSER, DBPWD);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	return conn;
	}
	      
	 
	public static void close(ResultSet resultSet, Statement statement, Connection connection) {
		if (resultSet != null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			resultSet = null;
		}
		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			statement = null;
		}
		if (connection != null) {
			try {
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			connection = null;
		}
	}
}

servlet

package com.dong.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

import com.alibaba.fastjson.JSONObject;
import com.hnrj.credit.dao.UserDao;
import com.hnrj.credit.service.lhjc.impl.TestExcel;
import com.hnrj.util.JDBCUtil;


@WebServlet("/FindUser")
public class UserServlet extends HttpServlet{
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp){
		try {
			InputStream is= req.getInputStream();
			String bodyInfo = IOUtils.toString(is, "UTF-8");
			JSONObject jsonobject = JSONObject.parseObject(bodyInfo);
			String  name=jsonobject.getString("nickname");
			String id =jsonobject.getString("id");
			UserDao userdao = new  UserDao();
			List<Object[]> dataList = userdao.getUser();
			  String[] cloName = new String[]{"id","name","password","gender","phone","email","role","img","nicename","regist_time"};
			  TestExcel ex = new TestExcel("test", cloName, dataList);
		      try {
				ex.export();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值