用poi将数据库中的数据导入到excel中

HSSFWorkbook与XSSFWorkbook的区别

  • HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;
  • XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;

数据库表结构如下:
在这里插入图片描述
导出效果如下:
在这里插入图片描述

以下poi将数据库中的数据导入excel中的代码:

	public static void export() throws Exception {
		Connection conn = DBUtils.getConn();
		//获得数据库的结构
		DatabaseMetaData dmd = conn.getMetaData();
		//查询数据库中所有的表名    (为配置信息里面的配置的相关数据库)
		ResultSet rs = dmd.getTables(null,null,"%", new String[]{"TABLE"});
		
		//将所有的表名加入到tables结合里面
		List<String> tables = new ArrayList<String>();
		while(rs.next()){
		String tableName = rs.getString("TABLE_NAME");
		tables.add(tableName);
		}
		
		//获得对象XSSFWorkbook,并且通过数据库获得的表名创建表单
		XSSFWorkbook book=new XSSFWorkbook();
		for(String tableName:tables){
			XSSFSheet sheet = book.createSheet(tableName);
			
			//通过表名查询该表所有的内容,获得结果集
            String sql="select * from  "+tableName;
            PreparedStatement pstmt = DBUtils.getPstmt(sql);
		    rs = pstmt.executeQuery(sql);
		    
		    //获得结果集的结构
		    ResultSetMetaData rsmd = rs.getMetaData();
		    //获得该结果集列的数量
		    int cols = rsmd.getColumnCount();
		    
		    //通过数据库中的列名创建与之对应的excel列名        该列名为第一行
		    XSSFRow row = sheet.createRow(0);
		    for(int i=0;i<cols;i++){
		    	//获得数据库中的列名  注意数据库列的名字是从1开始算的
		    	String colName = rsmd.getColumnName(i+1);
		    	//创建一个新的列
		    	XSSFCell cell = row.createCell(i);
		    	//赋值
		    	cell.setCellValue(colName);
		    }

		   //遍历数据 将其填充在所有单元格里面
		   int index=1;
		   while(rs.next()){
			   row = sheet.createRow(index++);
			   for(int i=0;i<cols;i++){
				   //获取数据库中每一行的数据
				   String val = rs.getString(i+1);
				   //创造一个列
				   XSSFCell cell = row.createCell(i);   
				   cell.setCellValue(val);
			   }
		   }
		}
		conn.close();
		book.write(new FileOutputStream("D:/e.xlsx"));
		System.out.println("导出成功");
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值