1. Workbook wb = new HSSFWorkbook();//创建工作簿
  2. Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
  3. Statement stmt = conn.createStatement();
  4. DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
  5. ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
  6. while (dnset.next()) {//遍历所有数据库
  7. String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
  8. {
  9. ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
  10. while (tSet.next()) {//遍历数据库中所有表
  11. String tName = tSet.getString("TABLE_NAME");
  12. stmt.execute("use " + dbName);//
  13. String sql = "select * from " + tName;
  14. Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
  15. Row row = sheet.createRow();//
  16. ResultSet rSet = stmt.executeQuery(sql);
  17. ResultSetMetaData rsmd = rSet.getMetaData();
  18. int count = rsmd.getColumnCount();
  19. List<String> list = new ArrayList<String>();
  20. for (int i = ; i < count; i++) {//获取表头并保存到cell中
  21. String name = rsmd.getColumnName(i + );
  22. row.createCell(i).setCellValue(name);
  23. list.add(name);
  24. }
  25. int i = ;
  26. while (rSet.next()) {//讲查询数据保存到cell中
  27. i++;
  28. int j = ;
  29. Row row2 = sheet.createRow(i);
  30. for (String s : list) {
  31. String value = rSet.getString(s);
  32. Cell cell = row2.createCell(j);
  33. cell.setCellValue(value);
  34. j++;
  35. }
  36. }
  37. FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
  38. wb.write(out);
  39. out.close();
  40. }
  41. }
  42. }
  43.  
  44. System.out.println("Success");

加强:有的数据库中不允许Result嵌套,所以需要把数据暂存到List中进行加强,提高兼容性

  1. Workbook wb = new HSSFWorkbook();//创建工作簿
  2. Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
  3. Statement stmt = conn.createStatement();
  4. DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
  5. ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
  6. List<String> dbnameList=new ArrayList<String>();//数据库名
  7. while (dnset.next()) {//遍历所有数据库
  8. String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
  9. dbnameList.add(dbName);
  10. }
  11.  
  12. for(String dbName:dbnameList)
  13. {
  14. List<String> tanameList=new ArrayList<String>();//数据库中表名
  15. ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
  16. while (tSet.next()) {//遍历数据库中所有表
  17. String tName = tSet.getString("TABLE_NAME");
  18. tanameList.add(tName);
  19. }
  20.  
  21. stmt.execute("use " + dbName);//
  22. for(String tName:tanameList)
  23. {
  24. String sql = "select * from " + tName;
  25. Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
  26. Row row = sheet.createRow(0);//
  27. ResultSet rSet = stmt.executeQuery(sql);
  28. ResultSetMetaData rsmd = rSet.getMetaData();
  29. int count = rsmd.getColumnCount();
  30. List<String> list = new ArrayList<String>();
  31. for (int i = 0; i < count; i++) {//获取表头并保存到cell中
  32. String name = rsmd.getColumnName(i + 1);
  33. row.createCell(i).setCellValue(name);
  34. list.add(name);
  35. }
  36. int i = 0;
  37. while (rSet.next()) {//讲查询数据保存到cell中
  38. i++;
  39. int j = 0;
  40. Row row2 = sheet.createRow(i);
  41. for (String s : list) {
  42. String value = rSet.getString(s);
  43. Cell cell = row2.createCell(j);
  44. cell.setCellValue(value);
  45. j++;
  46. }
  47. }
  48. FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
  49. wb.write(out);
  50. out.close();
  51. }
  52. }
  53. System.out.println("Success");

导出数据库中所有数据到Excle中的更多相关文章

  1. Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  2. SQLServer2008 和SQLServer2008 R2版本导出 数据库结构和数据sql

    ①SQLServer2008 版本导出 数据库结构和数据sql ②SQLServer2008R2 版本导出 数据库结构和数据sql 采集 #HUABAN_WIDGETS .HUABAN-red-nor ...

  3. 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式

    Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...

  4. flink04 -----1 kafkaSource 2. kafkaSource的偏移量的存储位置 3 将kafka中的数据写入redis中去 4 将kafka中的数据写入mysql中去

    1. kafkaSource 见官方文档 2. kafkaSource的偏移量的存储位置 默认存在kafka的特殊topic中,但也可以设置参数让其不存在kafka的特殊topic中   3   将k ...

  5. Oracle数据库间的数据复制 - SQLPlus中的COPY命令

    Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同. 根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持 ...

  6. 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...

  7. winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...

  8. C# 读取Excel中的数据到DataTable中

    原文地址:http://www.open-open.com/code/view/1420029490093 public DataTable ExcelToDS(string Path) { stri ...

  9. 映射Xml文件中的数据到JavaBean中

    使用Java原生的javax.xml.bind包下的JAXBContext将一个Xml文件中的数据映射到一个JavaBean中 import java.io.File; import java.io. ...

随机推荐

  1. 用javascript预加载图片、css、js的方法研究

    预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提 ...

  2. IIS开启伪静态后html静态页面无法访问的解决方法

    IIS开启伪静态后,发现原本存在的html静态页面无法访问了,显示的404错误.网上查了下,是因为实现伪静态就是使用 URLRewriter 来映射后缀,会把asp等动态页面映射成html,但是原来存 ...

  3. PHP连续签到

    require "./global.php"; $act = isset($_GET['act']) ? $_GET['act'] : "error"; // ...

  4. 图的建立——邻接矩阵表示(C语言+VC6.0平台)

    图的邻接矩阵表示及其建立(无向图) #include <stdio.h> #include <stdlib.h> typedef char VertexType;        ...

  5. Bootstrap 基础教程

    Bootstrap——来自Twitter的流行前端框架 一:Bootstrap简介 Boostrap是一个非常受欢迎的前端开发框架,该框架极大的提高前端团队的开发效率. Bootstrap对常见的CS ...

  6. SpringMVC——从HelloWorld

    学习SpringMVC——从HelloWorld开始   前言: 时隔十二年,中国女排最终过关斩将,用3:1的成绩证明了自己的实力,霸气夺冠,为中国赢得了一枚意义非常的金牌.这是一次全民的狂欢,一场视 ...

  7. DOM 之通俗易懂讲解

    DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...

  8. 禁用USB存储设备(不重启)

    Title:禁用USB存储设备(不重启) -- 2012-09-13 12:08 在win2003实验,USB存储禁止,无需重启! stop usbrw.reg ------------------- ...

  9. cf D. Broken Monitor

    http://codeforces.com/contest/370/problem/D 题意:输入一张图,上面只有两个字符'w'和‘.’ ,如果可以用一个正方形把所有的‘w’围起来,所有的‘w’都在正 ...

  10. Cracking the coding interview--Q1.7

    原文 Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column are s ...