Workbook wb = new HSSFWorkbook();//创建工作簿
Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
Statement stmt = conn.createStatement();
DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
while (dnset.next()) {//遍历所有数据库
String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
{
ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
while (tSet.next()) {//遍历数据库中所有表
String tName = tSet.getString("TABLE_NAME");
stmt.execute("use " + dbName);//
String sql = "select * from " + tName;
Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
Row row = sheet.createRow();//
ResultSet rSet = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rSet.getMetaData();
int count = rsmd.getColumnCount();
List<String> list = new ArrayList<String>();
for (int i = ; i < count; i++) {//获取表头并保存到cell中
String name = rsmd.getColumnName(i + );
row.createCell(i).setCellValue(name);
list.add(name);
}
int i = ;
while (rSet.next()) {//讲查询数据保存到cell中
i++;
int j = ;
Row row2 = sheet.createRow(i);
for (String s : list) {
String value = rSet.getString(s);
Cell cell = row2.createCell(j);
cell.setCellValue(value);
j++;
}
}
FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
wb.write(out);
out.close();
}
}
} System.out.println("Success");

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

 Workbook wb = new HSSFWorkbook();//创建工作簿
Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
Statement stmt = conn.createStatement();
DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
List<String> dbnameList=new ArrayList<String>();//数据库名
while (dnset.next()) {//遍历所有数据库
String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
dbnameList.add(dbName);
} for(String dbName:dbnameList)
{
List<String> tanameList=new ArrayList<String>();//数据库中表名
ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
while (tSet.next()) {//遍历数据库中所有表
String tName = tSet.getString("TABLE_NAME");
tanameList.add(tName);
} stmt.execute("use " + dbName);//
for(String tName:tanameList)
{
String sql = "select * from " + tName;
Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
Row row = sheet.createRow(0);//
ResultSet rSet = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rSet.getMetaData();
int count = rsmd.getColumnCount();
List<String> list = new ArrayList<String>();
for (int i = 0; i < count; i++) {//获取表头并保存到cell中
String name = rsmd.getColumnName(i + 1);
row.createCell(i).setCellValue(name);
list.add(name);
}
int i = 0;
while (rSet.next()) {//讲查询数据保存到cell中
i++;
int j = 0;
Row row2 = sheet.createRow(i);
for (String s : list) {
String value = rSet.getString(s);
Cell cell = row2.createCell(j);
cell.setCellValue(value);
j++;
}
}
FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
wb.write(out);
out.close();
}
}
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. js前台与后台数据交互

    客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...

  2. Spark学习笔记--Graphx

    浅谈Graphx: http://blog.csdn.net/shangwen_/article/details/38645601 Pregel: http://blog.csdn.net/shang ...

  3. 转:15 Best Responsive Web Design Testing Tools

    Responsive Web Design is regarded as being the approach which suggests that web design and developme ...

  4. MySQL中的concat函数

    select concat('数据库',cast('aa' as char),'查询') as str

  5. 调整altium designer15的十字光标大小

    在左上角的DXP下preferences中调整.首先打开该窗口. 1.原理图:schematic-----graphical editing,此窗口中cursor栏有个cursor type,其下拉菜 ...

  6. Windows内存小结(有好多图,比较清楚)

    以前写过一篇理解程序内存, 当时主要是针对用户态,下面再稍微深入一点: 我们以32位程序为例(不启用AWE), 总共4G虚拟空间,其中低2G属于用户态, 高2G属于操作系统内核, 每个程序都有自己的低 ...

  7. JS Map 简单实现

    /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...

  8. Linux企业级项目实践之网络爬虫(28)——爬虫socket处理

    Socket是进程之间交换数据的机制.这些进程即可以是同一台机器上的,也可以是通过网络连接起来的不同机器.一旦一个Socket连接建立,那么数据就能够双向传输,直到其中一端关闭连接. 通常,请求数据的 ...

  9. POJ2761---Feed the dogs (Treap求区间第k大)

    题意 就是求区间第k大,区间 不互相包含. 尝试用treap解决一下 第k大的问题. #include <set> #include <map> #include <cm ...

  10. SQL Server 启用 xp_cmdshell 与bcp 使用

    启用 xp_cmdshell 1: sp_configure 'show advanced options',1 2: reconfigure 3: GO 4: 5: sp_configure 'xp ...