如何将数据库的表导出生成Excel?

1.如何通过元数据拿到数据库的信息? 
2.如何用Java生成Excel表? 
3.将数据库中的表导出生成Excel案例

如何通过元数据拿到数据库的信息

元数据:描述数据的数据

Java中使用元数据的两个方法

  • DatabaseMetaData 通过连接可以拿到的信息:数据库软件,所有数据库名,所有数据库里面的表名,描述数据库的元数据
  • ResultSetMetaData 拿到的表结构信息:获得表的列数目 类型和属性 ,描述数据库表的元数据

DatabaseMetaData 的使用学习

@Test// DatabaseMetaData 通过连接可以拿到的信息:数据库软件,所有数据库名,所有数据库里面的表名 public void DatabaseMetaData_Demo() throws Exception{ // 自己写的工具包来获得数据库连接 Connection con = ConnUtils4.getConn(); //DatabaseMetaData 通过连接获得 DatabaseMetaData dbmt = con.getMetaData(); // 数据库软件名 System.out.println(" 数据库软件名:"+dbmt.getDatabaseProductName()); // 拿到所有数据库名字 ResultSet rs =dbmt.getCatalogs(); List<String> tablenames = new ArrayList<String>(); while(rs.next()){ String tabname=rs.getString("TABLE_CAT"); tablenames.add(tabname); System.out.println("数据库名字:"+tabname); } System.out.println("--------------");; //拿到某个数据库李曼所有的表名---可以指定表的类型 rs = dbmt.getTables("ake", "ake", null, new String[]{"TABLE","VIEW"}); while(rs.next()){ System.out.println("数据库ake里的表名:"+rs.getString("TABL````` _NAME")); } }

ResultSetMetaData的使用学习

@Test// ResultSetMetaData 拿到的表结构信息:获得表的列数目 类型和属性 public void ResultSetMetaData_Demo2() throws Exception{ // 自己写的工具包来获得数据库连接 Connection con = ConnUtils4.getConn(); String sql = "select * from ake.book"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); // ResultSetMetaData 通过 查询的返回集获取 ResultSetMetaData rsmt = rs.getMetaData(); //获得表的列数 int n =rsmt.getColumnCount(); //类型---某一列 // getColumnTypeName:INT //某医疗的名字 // getColumnName:id //某一列的长度 // getColumnDisplaySize:11 for(int i=1;i<n;i++){ System.out.println(rsmt.getTableName(i)+"表的第"+i+"列描述信息"); System.out.println("getColumnDisplaySize:"+rsmt.getColumnDisplaySize(i)); System.out.println("getColumnLabel:"+rsmt.getColumnLabel(i)); System.out.println("getColumnName:"+rsmt.getColumnName(i)); System.out.println("getColumnType:"+rsmt.getColumnType(i)); System.out.println("getColumnTypeName:"+rsmt.getColumnTypeName(i)); System.out.println("getPrecision:"+rsmt.getPrecision(i)); System.out.println("getScale:"+rsmt.getScale(i)); System.out.println("getSchemaName:"+rsmt.getSchemaName(i)); System.out.println("------------"); } con.close(); }

拿出ake表里面所有的内容~~~~

// 拿出ake表里面所有的内容~~~~ public static void main(String[] args) throws Exception{ Connection con = ConnUtils4.getConn(); System.out.println(con); DatabaseMetaData dbmt = con.getMetaData(); //拿到所有的ake所有表名 ResultSet rs =dbmt.getTables("ake", "ake", null, new String[]{"TABLE","VIEW"}); List<String> tablenames = new ArrayList<String>(); while(rs.next()){ String tablename = rs.getString("TABLE_NAME"); tablenames.add(tablename); } for(String tablename:tablenames){ System.out.println(tablename+"表:"); if(tablename.equals("img")){ continue; } String sql = "select * from ake."+tablename; Statement st = con.createStatement(); ResultSet RS = st.executeQuery(sql); ResultSetMetaData rsmt = RS.getMetaData(); // 拿到列数 int colnums = rsmt.getColumnCount(); for(int i=1;i<=colnums;i++){ //拿到表头信息 String colName = rsmt.getColumnName(i); System.out.print(colName+"\t"); } System.out.println(); while(RS.next()){ for(int i=1;i<=colnums;i++){ //拿到表信息 System.out.print( RS.getString(i)+"\t"); } System.out.println(); } } con.close(); }

我把那到的表格信息输出 
 

如何用Java生成Excel表?

需要一个插件工具包 

@Test public void Workbook_demo() throws Exception{ // 建立一个工作表--相当于一个数据库 Workbook book = new HSSFWorkbook(); // 数据库中的一个表 Sheet sheet1 =book.createSheet("表1"); // 行 Row row =sheet1.createRow(4); // 单元格 Cell cell = row.createCell(3); // 写入数据 cell.setCellValue("通过java写的Excel"); // 保存到银盘 book.write( new FileOutputStream("d:a/a.xls")); }

将数据库中的表导出生成Excel案例

public static void main(String[] args) throws Exception { //把数据库里所有的信息导入到Excel表中~ Connection con = ConnUtils4.getConn(); DatabaseMetaData dbmt = con.getMetaData(); //要通过 DatabaseMetaData 拿到所有数据库的名字 List<String> Database_Names = new ArrayList<String>(); ResultSet rs =dbmt.getCatalogs(); while(rs.next()){ Database_Names.add( rs.getString("TABLE_CAT")); } //DatabaseMetaData 拿到所有数据表名 int m = 0; for(String Database_Name:Database_Names){ if(!Database_Name.equals("ake")){ continue; } // if(m++>=3){ // break; // } // 一个数据库对于一个 Excel文档~ Workbook book = new HSSFWorkbook(); rs = dbmt.getTables(Database_Name, Database_Name, null, new String[]{"TABLE","VIEW"}); //封装所有表名 List<String> Table_Names = new ArrayList<String>(); while(rs.next()){ Table_Names.add( rs.getString("TABLE_NAME")); } for(String Table_Name:Table_Names){ if("img".equals(Table_Name) ||"note".equals(Table_Name) ){ // img为二进制文件导入会出错 continue; } //创建一个表 Sheet sheet = book.createSheet(Table_Name); Statement st = con.createStatement(); String sql = "select * from "+Database_Name+"."+Table_Name; // System.out.println("sql:"+sql); rs = st.executeQuery(sql); //设置表头信息 Row row1 = sheet.createRow(0); ResultSetMetaData rsmd = rs.getMetaData(); int colnum = rsmd.getColumnCount(); for(int i=1;i<=colnum;i++){ String name = rsmd.getColumnName(i); Cell cell = row1.createCell(i-1); cell.setCellValue(name); // System.out.print(name+"\t"); } // System.out.println(); //设置表格信息 int idx = 1; while(rs.next()){ Row row = sheet.createRow(idx++); for(int i=1;i<=colnum;i++){ String str = rs.getString(i); // System.out.print(str+"\t"); Cell cell = row.createCell(i-1); cell.setCellValue(str); } // System.out.println(); } } book.write( new FileOutputStream( "d:a/"+Database_Name+".xls")); } }

执行结果就成功啦! 
 
 

时间: 2024-10-17 05:29:10

如何将数据库的表导出生成Excel?的相关文章

从数据库的表导出到Excel表格中【让客户端下载的Excel】

原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] 这个例子是从gridview中导出到Excel,可以举一反三,可以直接从数据库中取值放在DataSet中,然后再从DataSet中导出到Excel,原理是一样的。。。。 例子: 网站文件夹中的所有内容: excel中的内容:[具有固定的Excel表头] 后台代码: using System;using System.Data;using System.Configuration;using System.Web

导出数据库任意表数据为EXCEL

public class ExportAsExcel { final Logger logger = LoggerFactory.getLogger(getClass()); static SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 公共组件,导出Excel表格数据方法<p> * 使用方法: 数据为List<Object>类型,注意当中object的

PHP导出生成Excel文件

PHP导出生成Excel首先需要下载安装office扩展 可以自行下载,也可以通过composer下载安装 个人比较建议后者 代码很简单  不废话直接上代码 /** * @param $file_name String 文件名称 * @param $title String 标题 * @param $order String 中文的表格序以逗号方式连接 * @param $data array 数据集 * @param $data_order String 数据集合key以逗号的方式连接 */

【Mysql】将Mysql的一张表导出至Excel

把Mysql的一张表导出至Excel不像<[Mysql]将Excel表导入至Mysql的其中一张表>(点击打开链接)那样困难, 直接输入如下的T-SQL语句即可: select * from 某个表 into outfile '文件路径' 比如,我要把如下的test数据库的一张i_student表导出至d盘根目录下的1.xls: use test 之后,输入: select * from i_student into outfile 'd:/1.xls' 如下图: 然后你就会发现在D盘静静躺着

将数据库的数据导出到excel中

这篇文章主要介绍了asp中把数据导出为excel的2种方法:分别用excel组件.文件组件实现,需要的朋友可以参考下.我们在做项目的时候经常要将数据库的数据导出到excel中,很多asp用户并不知道怎么写.这里总结了两种方法来导出excel,希望能帮到大家. 方法一:用excel组件 方法二:使用文件组件 可以看出,第一种方法是直接导出的是excel文件,而第二张方法是到处的是文本文件,只不过后缀名改成了xls. 然后看起来就是excel了. 经过对比第一种方法的效率没有第二种方法的效率高,而且

Json数据导出生成Excel

最近在做一个导入导出Excel的功能,导出其他类型的文件都比较熟悉,但是导入跟导出一个Excel还是稍微特殊点.根据这次的经验,写了个导出的小样例. 总体思路就是json数据的key,value跟Excel的行列转换,还有就是解决数据在Excel表格中存放的位置,区域问题. 这里要用到的两个小插件,一个是xslx.js,一个是FileSaver.js,前者是来处理生成Excel的,后者是用来把文件下载保存到本地的. 下载地址: https://github.com/eligrey/FileSav

MVC4+EF5+Oracle项目点滴记录(001)将数据库中的数据用NPOI导出生成excel

关于NOPI 2.0在项目中的使用 1.在官网下载 NPOI 文件包 http://npoi.codeplex.com/releases 下载后将NPOI.dll和ICSharpCode.SharpZipLib.dll加载到项目中  最好是全部加载(NPOI.OOXML.dll.NPOI.OpenXml4Net.dll.NPOI.OpenXmlFormats.dll) 2.在三层中的Model层中新建一个类,专门用来处理数据表导成Excel,这里先导出数据库City表中的全部信息 代码如下 (注

数据库多张表导出到excel

public static void export() throws Exception{ //声明需要导出的数据库 String dbName = "hdcloude"; //声明book HSSFWorkbook book = new HSSFWorkbook(); //获取Connection,获取db的元数据 //Connection con = DataSourceUtils.getConn(); Connection con =DriverManager.getConnec

使用pentaho工具将数据库数据导入导出为Excel

写在前面:本篇博客讲述的是如何使用pentaho工具快速的将数据库数据导出为Excel文件,以及如何将Excel文件数据导入数据库. 补充:使用此工具并不需要任何一句代码并能快速便捷解决实际问题,此工具功能不仅仅局限这一点,其他功能后续更新. 工具下载:你可以根据你电脑的系统选择不同版本在pentaho官网进行下载: http://www.pentaho.com/download 需求一:将mysql一张表数据导出到Excel 第一步:添加数据库驱动包 注意:由于本例我要将mysql数据库数据导