`

导出数据库设计结构为Excel表格,数据库字段操作

阅读更多
第一步:
package DB;

import java.util.HashMap;
import java.util.Map;
/**
* 数据库字段数据类型与数字之间的对应关系
* @author lxzqz
*
*/
public class Types {
protected final static Map<Integer, String> MAP = new HashMap<Integer, String>();
public static final int ARRAY = 2003;
public static final int BIGINT = -5;
public static final int BINARY = -2;
public static final int BIT = -7;
public static final int BLOB = 2004;
public static final int BOOLEAN = 16;
public static final int CHAR = 1;
public static final int CLOB = 2005;
public static final int DATALINK = 70;
public static final int DATE = 91;
public static final int DECIMAL = 3;
public static final int DISTINCT = 2001;
public static final int DOUBLE = 8;
public static final int FLOAT = 6;
public static final int INTEGER = 4;
public static final int JAVA_OBJECT = 2000;
public static final int LONGNVARCHAR = -16;
public static final int LONGVARBINARY = -4;
public static final int LONGVARCHAR = -1;
public static final int NCHAR = -15;
public static final int NCLOB = 2011;
public static final int NULL = 0;
public static final int NUMERIC = 2;
public static final int NVARCHAR = -9;
public static final int OTHER = 1111;
public static final int REAL = 7;
public static final int REF = 2006;
public static final int ROWID = -8;
public static final int SMALLINT = 5;
public static final int SQLXML = 2009;
public static final int STRUCT = 2002;
public static final int TIME = 92;
public static final int TIMESTAMP = 93;
public static final int TINYINT = -6;
public static final int VARBINARY = -3;
public static final int VARCHAR = 12;
/**
* 根据需要添加数字与数据类型字符串的对应关系
*/
static {
MAP.put(12, "VARCHAR");
MAP.put(4, "INTEGER");
MAP.put(2005, "CLOB");
MAP.put(2004, "BLOB");
MAP.put(91, "DATE");
MAP.put(-5, "BIGINT");
MAP.put(1, "CHAR");
MAP.put(93, "TIMESTAMP");
MAP.put(2, "NUMERIC");
MAP.put(5, "SMALLINT");
}
}
第二步:
package DB;
/**
* 数据库连接凭证
* @author lxzqz
*
*/
public class DBInfo {
//数据库地址,数据库端口号,数据库名称
private String url;
//用户名
private String user;
//密码
private String password;
//数据库驱动
private String driver;
public DBInfo() {}
public DBInfo(String url, String user, String password, String driver) {
this.setUrl(url);
this.setUser(user);
this.setPassword(password);
this.setDriver(driver);
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
/**
* 执行生成Excel表格
* @throws Exception
*/
public void doIt() throws Exception{
DBToTable.main(this);
}

public static void main(String[] args) throws Exception{
DBInfo info = new DBInfo("jdbc:kingbase://172.24.38.5:54321/tourism", "bjlyw", "bjlyw", "com.kingbase.Driver");
info.doIt();
}
}
第三步:需要提供数据库驱动包,以及操作Excel表的jxl.jar包
package DB;
import java.io.File;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* 导出数据库设计结构为Excel表格
* @author lxzqz
*
*/
public class DBToTable {
protected static void main(DBInfo info) throws Exception{
Class.forName(info.getDriver());
Connection conn = DriverManager.getConnection(info.getUrl(), info.getUser(), info.getPassword());
DatabaseMetaData databaseMetaData = conn.getMetaData();
ResultSet tables = databaseMetaData.getTables(null, "PUBLIC", "%", new String[]{"TABLE"});
String path = "E://数据库设计.xls";
WritableWorkbook book = Workbook.createWorkbook(new File(path));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet("第一页 ", 0);
int i = 0;
while(tables.next()) {
String tableName = tables.getString("TABLE_NAME");
ResultSet columns = databaseMetaData.getColumns(null, "%", tableName, "%");
/**
* COLUMN_NAME String => 列名称
DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型
COLUMN_SIZE int => 列的大小。
REMARKS String => 描述列的注释
IS_NULLABLE String => ISO 规则用于确定列是否包括 null。
YES --- 如果参数可以包括 NULL
NO --- 如果参数不可以包括 NULL
*/
sheet.mergeCells(0, i, 5, i + 1);
WritableCellFormat format = new WritableCellFormat();
format.setAlignment(Alignment.CENTRE);
format.setVerticalAlignment(VerticalAlignment.CENTRE);
Label label = new Label(0, i, "表名" + tableName, format);
i += 2;
Label label2 = new Label(0, i, "字段名", format);
sheet.addCell(label2);
Label label3 = new Label(1, i, "属性名", format);
sheet.addCell(label3);
Label label4 = new Label(2, i, "类型", format);
sheet.addCell(label4);
Label label5 = new Label(3, i, "长度", format);
sheet.addCell(label5);
Label label6 = new Label(4, i, "是否可空", format);
sheet.addCell(label6);
Label label7 = new Label(5, i, "注解", format);
sheet.addCell(label7);
sheet.addCell(label);
while(columns.next()) {
++i;
//列明
String colName = columns.getString("COLUMN_NAME");
Label C = new Label(0, i, colName, format);
sheet.addCell(C);
//注解-属性名
String remarks = columns.getString("REMARKS");
Label R = new Label(1, i, remarks, format);
sheet.addCell(R);
//数据类型-数字
int type = columns.getInt("DATA_TYPE");
//数据类型-字符串
String typeName = Types.MAP.get(type);
Label T = new Label(2, i, typeName, format);
sheet.addCell(T);
//数据长度
int length = columns.getInt("COLUMN_SIZE");
Label L = new Label(3, i, length + "", format);
sheet.addCell(L);
//是否为空
String isNull = columns.getString("IS_NULLABLE");
isNull = "YES".equals(isNull) ? "NULL" : "NOT NULL";
Label N = new Label(4, i, isNull, format);
sheet.addCell(N);
Label RR = new Label(5, i, remarks, format);
sheet.addCell(RR);
}
i += 3;
}
// 写入数据并关闭文件
book.write();
book.close();
}
}
分享到:
评论

相关推荐

    从MySQL数据库中获取表格的结构信息,然后将其写入Excel文件中 效果一级棒,谁用谁知道

    # 从MySQL数据库中获取表格的结构信息,然后将其写入Excel文件中。具体实现步骤包括: # 代码实现说明 # 1定义数据库连接信息和表名前缀; # 2创建一个新的Excel工作簿; # 3连接MySQL数据库,并创建游标对象; # 4...

    C# .net 实现表结构excel表格导出

    程序开发工具vs 2013,导出sql server 表结构,由两个页面组成,一个是数据库测试登录界面,一个是数据库表结构(表名,字段名称,字段类型,字段说明,是否为主键,是否自增...)导出界面等

    JAVA可选择列导出表格方法。

    可像EXCEL那样,导出选择的列。导出的内容是EXCE表格。

    导出devexpress插件的GridControl控件中GridView表格中的数据到excel

    2.ExportExcelStyle.cs:导出的excel样式结构 3.ExcelFileExport.dll:打成的包,使用时引入系统,按如下方式调用即可 具体使用方法很简单,参考示例只用两行代码就OK了 只是我初学C#的一个总结,代码没有进行...

    导入导出Excel方法,很详细

    导入导出Excel方法,工具类.很详细注释很多,下载就可以使用,首先还要做出你要导出的Excel模板,标题,字段对应好

    java解析excel表格

    此程序用于解析excel表格,通过java程序导入excel数据到数据库,实现excel表与数据库字段的映射。也可以通过程序将数据库中数据导出到excel

    arcgis gdb 表格转excel.docx

    实现从在ArcGIS中遇到需要直接从gdb格式图层导出数据表格至Excel,导出的Excel会出现字段内容缺失、混乱或未完全加载的现象。本文操作可使excel表字段完整,数据正常。

    Access数据库转换成Excel表格格式Delphi代码.rar

    Delphi程序实现的文件转换程序,将Access数据库转换成Excel表格格式的文件,程序界面使用了控件,做的挺漂亮,功能方面将Excel的Sheet转换为Access的字段,也可进行逆转换,用起来挺方便的,最重要的是你可学习一下...

    java导出excel

    java从数据库导出数据到excel表格,对用字段和相应列。

    Kendo UI框架grid的Excel导出功能改进js代码

    Kendo UI的Excel导出主要看两点,一是该列(column)是field字段,而不是自定义的name;二是该列不是隐藏的(hidden:true)。这样我们无法灵活导出我们需要的列。 为了解决上面两个问题,我查看了Kendo UI的源代码,...

    c#实现把access数据库中表格内容导入 到excel2003

    实现了把access数据库表格中的内容显示到datagridview中,然后在导入到excel2003中。

    mysql如何将表结构导出到excel

    需求如下 导出表的结构,和字段备注信息,表名等。不需要借用第三方工具即可实现。 SELECT TABLE_NAME 表名, ...-- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可 table_sch

    Excel数据的导入、导出及更新操作

    * 标 题:Excel表格内容导入导出,目前支持SqlServer和Oracle数据库两种版本,可以任意扩展 * 功能描述: * 可以自定义Excel内容,定义方法参见"字段功能规则.doc",样例为“船舶基本信息.xls” * 支持数据插入...

    java把excel表的数据导入到mysql数据库

    用java把excel表的数据导入到数据库(可能有些类型还没考虑完全,抽空写的) 简单的思路 ... 二、读取excel文件的数据(注意:excel文件的数据表字段的顺序与该表的顺序一致,有空再做导出) 三、拼接sql

    数据导入导出1.1

    也可以从任意打开表格中将数据导入到数据库中,还可以将变更前的数据先保存到XML中,数据变化后,可以变化的数据导出到Excel中,将变更的字段标色,方便追踪操作过程中变化的数据。本软件使用简单,功能强大,是开发...

    WinForm更新本地数据库信息系统源码2012813

    WinForm更新本地数据库信息系统源码 功能介绍: ...6.选择更新,上传Excel表格,更新结束。不成功的数据存到bin目录下cuowu.txt文本中 注意事项: 如果是07的office记得把格式转换成Excel 97-2003工作薄

    VSNET代码生成编程工具1.0绿色版(支持多种的数据库连接方式)

    支持表格打印、预览功能,还可以导出Excel表格,轻松的的查看数据库表格结构。 从Oracle数据库中提取C#实体代码,同时提取表及字段的注释,并可对生成的实体进行各种自定义的设置,如数据库列和C#类型的映射、...

    百变表格小神器

    主要实现名为“百变表格小神器”软件设计,软件依托本地数据库,利用前端导入功能,可实现对Excel表格的如下变化: 1、 能够实现多表导出一表功能; 2、 可实现对现有表格的信息抽取; 3、 可按要求实现表格格式...

    数据导入导出工具 v1.8.zip

    软件还支持从任意打开表格中将数据导入到数据库中、将变更前的数据先保存到XML中、以及数据变化后,可以变化的数据导出到Excel中,将变更的字段标色以方便追踪操作过程中变化的数。软件支持多种数据库,包括主流的...

    MDB库转EXCEL

    导出access数据库中所有内容到excel表格,每个字段到一个单独工作表!

Global site tag (gtag.js) - Google Analytics