第一步:如何用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设计一个连接数据库的程序,打印输出数据表中的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)