用POI操作Excel



第一步:导入jar包:
c3p0-0.9.1.2.jar
commons-dbutils-1.3.jar
mysql-connector-java-5.1.18-bin.jar
poi-3.7-20101029.jar
第二步:
public void createXls() throws Exception{
		//声明一个工作薄
		HSSFWorkbook wb = new HSSFWorkbook();
	   //声明表
		HSSFSheet sheet = wb.createSheet("第一个表");
		//声明行
		HSSFRow row = sheet.createRow(7);
		//声明列
		HSSFCell cel = row.createCell(3);
		//写入数据
		cel.setCellValue("你也好");
		
		FileOutputStream fileOut = new FileOutputStream("d:/a/b.xls");
	    wb.write(fileOut);
	    fileOut.close();
	}
	

如果连接数据库的话
1、导出指定数据库的所有表
分析:
1) 某个数据库有多少表 表名是什么?DataBaseMetadate.getMetadate().getTables(null,null,null,new String[]{Table});
--excel的文件名
2) 对每一个表进行select * 操作  ---每一个sheet的名称
3)  分析表结构   rs.getMetadate(); ResultSetMedated
4)  多个列 列名是什么---字段就是sheet的第一行信息
5)获取每行的数据   放到sheet第一行以后


@Test
	public void export() throws Exception{
		//声明需要导出的数据库
		String dbName = "focus";
		//声明book
		HSSFWorkbook book = new HSSFWorkbook();
		//获取Connection,获取db的元数据
		Connection con = DataSourceUtils.getConn();
		//声明statemen
		Statement st = con.createStatement();
		//st.execute("use "+dbName);
		DatabaseMetaData dmd = con.getMetaData();
		//获取数据库有多少表
		ResultSet rs = dmd.getTables(dbName,dbName,null,new String[]{"TABLE"});
		//获取所有表名 - 就是一个sheet
		List<String> tables = new ArrayList<String>();
		while(rs.next()){
			String tableName = rs.getString("TABLE_NAME");
			tables.add(tableName);
		}
		for(String tableName:tables){
			HSSFSheet sheet = book.createSheet(tableName);
			//声明sql
			String sql = "select * from "+dbName+"."+tableName;
			//查询数据
			rs = st.executeQuery(sql);
			//根据查询的结果,分析结果集的元数据
			ResultSetMetaData rsmd = rs.getMetaData();
			//获取这个查询有多少行
			int cols = rsmd.getColumnCount();
			//获取所有列名
			//创建第一行
			HSSFRow row = sheet.createRow(0);
			for(int i=0;i<cols;i++){
				String colName = rsmd.getColumnName(i+1);
				//创建一个新的列
				HSSFCell 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);
					//声明列
					HSSFCell cel = row.createCell(i);
					//放数据
					cel.setCellValue(val);
				}
			}
		}
		con.close();
		book.write(new FileOutputStream("d:/a/"+dbName+".xls"));
  	}
























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值