如何用java将数据库中的表导出到excel

如何用java将数据库中的表导出到excel,第1张

第一步:如何用POI *** 作Excel

@Test

public void createXls() throws Exception{

//声明一个工作薄

HSSFWorkbook wb = new HSSFWorkbook();

//声明表

HSSFSheet sheet = wbcreateSheet("第一个表");

//声明行

HSSFRow row = sheetcreateRow(7);

//声明列

HSSFCell cel = rowcreateCell(3);

//写入数据

celsetCellValue("你也好");

FileOutputStream fileOut = new FileOutputStream("d:/a/bxls");

wbwrite(fileOut);

fileOutclose();

}

第二步:导出指定数据库的所有表

分析:

1:某个数数据库有多少表,表名是什么?―――DataBaseMetadategetMetadate()getTables(null,null,null,new String[]{Table}); - excel的文件名称。

2:对每一个表进行select *** 作。 - 每一个sheet的名称。

3:分析表结构,rsgetMetadate(); ResultSetMedated

4:多个列,列名是什么- 字段名就是sheet的第一行信息。

5:获取每一行的数据 – 放到sheet第一行以后。

@Test

public void export() throws Exception{

//声明需要导出的数据库

String dbName = "focus";

//声明book

HSSFWorkbook book = new HSSFWorkbook();

//获取Connection,获取db的元数据

Connection con = DataSourceUtilsgetConn();

//声明statemen

Statement st = concreateStatement();

//stexecute("use "+dbName);

DatabaseMetaData dmd = congetMetaData();

//获取数据库有多少表

ResultSet rs = dmdgetTables(dbName,dbName,null,new String[]{"TABLE"});

//获取所有表名 - 就是一个sheet

List<String> tables = new ArrayList<String>();

while(rsnext()){

String tableName = rsgetString("TABLE_NAME");

tablesadd(tableName);

}

for(String tableName:tables){

HSSFSheet sheet = bookcreateSheet(tableName);

//声明sql

String sql = "select from "+dbName+""+tableName;

//查询数据

rs = stexecuteQuery(sql);

//根据查询的结果,分析结果集的元数据

ResultSetMetaData rsmd = rsgetMetaData();

//获取这个查询有多少行

int cols = rsmdgetColumnCount();

//获取所有列名

//创建第一行

HSSFRow row = sheetcreateRow(0);

for(int i=0;i<cols;i++){

String colName = rsmdgetColumnName(i+1);

//创建一个新的列

HSSFCell cell = rowcreateCell(i);

//写入列名

cellsetCellValue(colName);

}

//遍历数据

int index = 1;

while(rsnext()){

row = sheetcreateRow(index++);

//声明列

for(int i=0;i<cols;i++){

String val = rsgetString(i+1);

//声明列

HSSFCell cel = rowcreateCell(i);

//放数据

celsetCellValue(val);

}

}

}

conclose();

bookwrite(new FileOutputStream("d:/a/"+dbName+"xls"));

}

用JDBC连接数据库,然后用sql语句。要导入mysql的驱动包。

importjavasql;

publicclassTestMySql{

staticConnectioncon=null;//声明Connection对象

staticStatementsql=null;

staticResultSetres=null;

publicstaticvoidmain(String[]args){

TestMySqlc=newTestMySql();

con=c();

try{

sql=con();

res=sql("selectfromdept");

//sql语句,我数据库里有张dept表

while(resnext()){//输出结果

Systemoutprint(resgetString(1)"

Systemoutprint(resgetString(2)"

Systemoutprint(resgetString(3));

Systemoutprintln();

}

}catch(e){

e();

}finally{

try{

if(res!=null){

resclose();

res=null;

}

if(sql!=null){

sqlclose();

sql=null;

}

if(con!=null){

conclose();

con=null;

}

}catch(e){

e();

}

}

}

publicConnection(){

try{

ClassforName("commysqljdbcDriver");

//加载oracleJDBC驱动

Systemoutprintln("数据库驱动加载成功");

}catch(e){

e();

}

try{//通过访问数据库的URL获取数据库连接对象

con=(

"jdbc:mysql://localhost:3306/mydata","root","qwer1234");

//mydata为mysql名字

Systemoutprintln("数据库连接成功");

}catch(e){

e();

}

returncon;//按方法要求返回一个Connection对象

}

}

package 数据库测试;

import javasql;

/

@author qingsongwang

@20081116

说明:实现与数据库相连,取出数据库的内容显示

/

public class JDBCTest

{

//主函数main()

public static void main(String[] args) throws Exception

{

String kongge=new String(" ");

//为后面的结果集输出好看点

ClassforName("commysqljdbcDriver");

//驱动

Connection conn=DriverManagergetConnection("jdbc:mysql://localhost:3306/greatwqsuser=root&password=greatwqs");

/连接数据库,jdbc:mysql://localhost:3306/greatwqs 数据库为greatwqs数据库

端口为3306

用户名user=root

用户密码password=greatwqs

/

Statement stmt=conncreateStatement();

//创建SQL语句,实现对数据库的 *** 作功能

ResultSet rs=stmtexecuteQuery("select from person");

//返回查询的结果

while(rsnext())

{

Systemoutprint(rsgetString("id")+kongge);

Systemoutprint(rsgetString("name")+kongge);

Systemoutprint(rsgetString("gender")+kongge);

Systemoutprint(rsgetString("major")+kongge);

Systemoutprint(rsgetString("phone")+kongge);

Systemoutprintln();

}//输出结果集的内容

rsclose();

stmtclose();

connclose();

//关闭语句,结果集,数据库的连接

}

}

我运行的结果如下

要使用mysql的jar包,数据库名为test,表名shop,列名shopName

package comyunix;

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

public class Test {

public static void main(String []args){

Connection con = getAccessCon();

try {

Statement st = concreateStatement();

ResultSet rs = stexecuteQuery("select from shop");

while(rsnext()){

Systemoutprintln(rsgetString("shopName"));

}

rsclose();

stclose();

conclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

public static Connection getAccessCon(){

Connection con = null;

try{

ClassforName("commysqljdbcDriver")newInstance();

con=DriverManagergetConnection("jdbc:mysql://localhost:3306/testuser=root&password=root");

}catch(Exception e){

eprintStackTrace();

}

return con;

}

}

如何打印所有数据

如果你不想改你现在的显示方式,那么简单的改法就是

textsetText("商品ID:"+ID+"\n"+"商品名称:"+name+"\n"+"商品数量:"+amount+"\n"

               +"商品价格:"+price+"\n"+"进货日期:"+Date+"\n"+"商品来源:"+source+"\n");

换成

textsetText(textgetText()+"==================\n"+"商品ID:"+ID+"\n"+"商品名称:"+name+"\n"+"商品数量:"+amount+"\n"

               +"商品价格:"+price+"\n"+"进货日期:"+Date+"\n"+"商品来源:"+source+"\n");

这种改出来以后的效果就是

==========================

商品ID:

商品名称:

==========================

商品ID:

商品名称:

这种

要显示的好看点,就改成

Systemoutprintln("商品ID    商品名称    ");//先打印表头,仅仅是示意,格式自己调

while(rsnext())

         {

          int ID=rsgetInt("ID");

          String name=rsgetString(2);

          int amount=rsgetInt("number");

          String price=rsgetString(4);

         String     Date=rsgetString(5);

          String source=rsgetString(6);

          textsetText(textgetText()+id+"    "+name+"     "+"");//这里是示意一下 格式自己调

         }

改后的效果应该是

商品ID      商品名称     商品数量      进货日期     

10000       商品1          1                   2013-12-12

20000       商品2          2                   2013-12-13

2如何加入查询条件,你这个代码结构需要改变一下,不能在构造函数中处理,而应该加一个button和录入查询条件的输入框,加入一个查询方法

示意代码如下,肯定是不能用的,所以无需拷贝

public void buttonListener(){

query(textIdgetText(),textNamegetText());

}

private void query(String id,String name){

String str = "SELECT FROM storehouse where 1=1";

con=DriverManagergetConnection("jdbc:odbc:store","gxy","123");

    if(id != null){

str+=" and id like '%"+id+"&'";

}

     if(name!= null){

str+=" and name like '%"+name+"&'";

}

   Statement sql=concreateStatement();

     ResultSet    rs=sqlexecuteQuery(str);

//以下你懂得 略

}

你是JSP吗 使用如下方式就行了啊。

<Table>

<TR>

<TD><%=要输出的值%></TD>

<TD><%=输出的值%></TD>

</TR>

</Table>

public void jButton1_actionPerformed(ActionEvent actionEvent) {

try {

Connection con=conDB();

Statement st = concreateStatement();

ResultSet rs=stexecuteQuery("select NAME,PRICE from test");

StringBuffer sb=null;

定义一个 StringBuffer sb;

sbappend(rsgetString("NAME")+" "+rsgetString("PRICE"))

while(rsnext() )

{

sbappend(rsgetString("NAME")+" "+rsgetString("PRICE"));

jTextAreaappend(sbtoString());

}

rsclose();

stclose();

conclose();

}

catch(Exception e){

JOptionPaneshowMessageDialog(null,"出现异常!");

}

}

以上就是关于如何用java将数据库中的表导出到excel全部的内容,包括:如何用java将数据库中的表导出到excel、java中怎么获取mysql数据库的数据(java获取mysql数据库列表)、用JAVA设计一个连接数据库的程序,打印输出数据表中的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9467509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存