本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下
第一步:如何用POI操作Excel
- [url=home.php?mod=space&uid=5447]@test[/url]
- 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:某个数数据库有多少表,表名是什么?―――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"));
- }
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助。 |