java--把数据库数据写到本地excel中

需要poi-3.7-20101029.jar包

package cn.hncu.excel;

import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.Test;

import cn.hncu.pool.ConnUtils4;

public class ExcelDemo {

    HSSFWorkbook book=new HSSFWorkbook();
    @Test
    public void createExcel() throws Exception{
        //内存中(一棵树)
        HSSFSheet sheet=book.createSheet("表一");//创建工作薄
        HSSFRow row=sheet.createRow(4);//第5行--行对象
        HSSFCell cell=row.createCell(5);//5行6列==>F5单元格
        cell.setCellValue("湖南益阳");
        //把内存中的book对象写到本地
        book.write(new FileOutputStream("d:/a/a.xls"));

    }
    //把数据库某个数据库(例如:"hncu")中的所有数据导出到一个名为"a.xls"的工作薄
    @Test
    public void exportDb2Excel() throws Exception {
        Connection con=ConnUtils4.getConnection();
        DatabaseMetaData dm=con.getMetaData();
        ResultSet rss=dm.getCatalogs();
        while(rss.next()){
            System.out.println(rss.getString("TABLE_CAT"));
        }
        Scanner sc=new Scanner(System.in);
//      String dbName="hncu";//这里数据库名写死,如果要写活,用元数据操作
        String dbName=sc.next();
        ResultSet rs_table=dm.getTables(dbName, dbName, null, new String[]{"TABLE"});
        List< String> li=new ArrayList<String>();
        while(rs_table.next()){
            System.out.println(rs_table.getString("TABLE_NAME"));
            li.add(rs_table.getString("TABLE_NAME"));
        }
        /*
         * 进行数据库操作时,尽量不要出现结果集循环中再套结果集循环,即不要采用如下框架:
         * while(rs.next()){
         *      ....
         *      while(rs2.next()){
                ....
                }
         * }
         */
        HSSFWorkbook book=new HSSFWorkbook();
        for(String tableName:li){

            HSSFSheet sh=book.createSheet(tableName);
            String sql="select * from "+dbName+"."+tableName;
            ResultSet rs=con.createStatement().executeQuery(sql);
            ResultSetMetaData rm=rs.getMetaData();
            int cols=rm.getColumnCount();
            //创建并填充表头
            HSSFRow r=sh.createRow(0);
            for(int i=0;i<cols;i++){
                HSSFCell c=r.createCell(i);
                c.setCellValue(rm.getColumnName(i+1));
            }
            //创建并填充表内容(表中的数据)
            int x=1;//数据行的行号从1开始
            while(rs.next()){
                HSSFRow r2=sh.createRow(x++);//
                for(int i=0;i<cols;i++){
                    HSSFCell c=r2.createCell(i);
                    c.setCellValue(rs.getString(i+1));
                }

            }
            //把内存中的book对象写到本地
            book.write(new FileOutputStream("d:/a/a.xls"));
        }

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值