java通过jdbc操作Excel

ExcelAccess.java

package test;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

public class ExcelAccess {

    public static void main(String[] args) {

        List<DataTableColumns> ls = new ArrayList<DataTableColumns>();

        String dateForm ="yyyyMMddHHmmss"; //时间格式。mm指分钟
        String now = new SimpleDateFormat(dateForm).format(new java.util.Date());
        System.out.println(now);
        String dataTableName = "user_detail2";

        int data_id=1;
        int ret=0;
        //连接oracle
        String url = "jdbc:oracle:" + "thin:@***:1521:edu";
        String user = "***";
        String password = "***";
        DbOracle dbo= new DbOracle();
        dbo.conDbOracle(url,user,password);

        //获取表声明
        dbo.getTableColumns(data_id,ls);
        //建Excel sheet
        String tableName = "test";
        String sql=dbo.getTableInfo(tableName,ls);
        System.out.println(sql); 

        //Excel操作
        DbExcel dbExl = new DbExcel();
        if (!dbExl.openConnection()) {
            System.err.println("open connection err.");
            System.exit(1);
        }

        //ret = dbExl.createTableInfo(sql,tableName);
        if (ret == 1) {
            System.out.println("建表"+tableName+" success.");
        }

        String query = "";
        String colName = "";
        String colNames = "";
        for(int i = 0; i < ls.size(); i++)
        {
            colName +=ls.get(i).getValue_name()+",";
        }
        query = query+colName;
        colNames = query.substring(0,query.length()-1);
        query = "select "+colNames +" from "+dataTableName+" where rownum<60000";
        System.out.println("查询语句"+query+" success.");

        //query = "select web_id,省 from user_detail";

        String insertSql ="";
        colName="";
        ret = 1;
        try
        {
            dbo.st = dbo.con.createStatement();
            dbo.rs = dbo.st.executeQuery(query.toString());

            while (dbo.rs.next() && ret==1) {
                insertSql = "INSERT INTO ["+tableName+"$]("+colNames+") VALUES(";

                for(int i = 0; i < ls.size(); i++)
                {
                    colName =ls.get(i).getValue_name();
                    insertSql += "‘"+dbo.rs.getString(colName)+"‘,";
                }
                insertSql = insertSql.substring(0,insertSql.length()-1);
                insertSql += " )";
                ret = dbExl.insertExcel(insertSql);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        dbExl.closeConnection();
        dbo.closeDbOracle();

        now = new SimpleDateFormat(dateForm).format(new java.util.Date());
        System.out.println(now);
        // close the connection

    }
}

DbOracle.java

package test;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DbOracle
{
    public Connection con = null;
    public Statement st = null;
    public ResultSet rs = null;

    public void conDbOracle(String url,String user,String password){

        try
        {
            Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
            System.out.println("开始尝试连接数据库!");
            con = DriverManager.getConnection(url, user, password);// 获取连接
            System.out.println("连接成功!");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public void getTableColumns(int dataId,List<DataTableColumns> ls){

        StringBuffer sb = new StringBuffer();
        sb.append(" select column_id,column_name,value_name,value_length,value_type,order_no ");
        sb.append(" from data_table_columns_instance ");
        sb.append(" where data_id = "+dataId);
        sb.append(" order by order_no ");

        System.out.println(sb);

        try
        {
            st = con.createStatement();
            rs = st.executeQuery(sb.toString());
            while (rs.next()) {
                DataTableColumns dataColumns = new DataTableColumns();
                dataColumns.setColumn_id(rs.getInt("column_id"));
                dataColumns.setColumn_name(rs.getString("column_name"));
                dataColumns.setValue_name(rs.getString("value_name"));
                dataColumns.setValue_length(rs.getInt("value_length"));
                dataColumns.setValue_type(rs.getInt("value_type"));
                dataColumns.setOrder_no(rs.getInt("order_no"));
                ls.add(dataColumns);
            }

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

    }

    public String getTableInfo(String table_name,List<DataTableColumns> ls){
        String sql = "";
        String valueNames = "";

        for(int i = 0; i < ls.size(); i++)
        {
            valueNames +=ls.get(i).getValue_name();
            valueNames =valueNames+" TEXT,";
        }
        sql="create table "+table_name+"("+valueNames.substring(0,valueNames.length()-1)+")";
        return sql;
    }

    public void closeDbOracle(){

        try
        {
            if (con != null)
                con.close();
            System.out.println("数据库连接已关闭!");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

}

DbExcel.java

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class DbExcel {
    /** db connection */
    private Connection c;
    /** db statement */
    private Statement stmnt;
    /** JDBC driver name */
    private String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
    /** url of the db */
    private String url ="jdbc:odbc:DbExcel;ReadOnly=False;";
    /** username to access the db */
    private String username= "";
    /** password for the username */
    private String password= "";

    /**
     * open the connection
     * @return true if opened, false otherwise
     */
    public boolean openConnection() {
        try {
            Class.forName(driver);
            c = DriverManager.getConnection(url, username,
                    password);
            stmnt = c.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public int createTableInfo(String query,String tableName) {
        int result = -1;
        if (stmnt == null)
            return result;
        try {
            //建表,这里drop table 竟然是只drop表头
            //result = stmnt.executeUpdate("DROP TABLE "+tableName);
            c.commit();
            result = stmnt.executeUpdate(query);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

    public int insertExcel(String query) {

        int result = -1;
        try {
           result = stmnt.executeUpdate(query);
        } catch (SQLException e) {
            e.printStackTrace();
            closeConnection();
        }
        return result;
      }
    /**
     * close the connection
     */
   public boolean closeConnection() {
        try {
            if (stmnt != null)
                stmnt.close();
            if (c != null)
                c.close();
        } catch (Exception e) {
            System.err.println(e);
            return false;
        }
        return true;
    }
}

DataTableColumns.java

package test;

public class DataTableColumns {
    private int data_id = 0;
    private int column_id = 0;
    private String column_name = null;
    private String value_name = null;
    private int value_length = 3;
    private int value_type = 1;
    private int order_no = 0;
    /**
     * @param data_id the data_id to set
     */
    public void setData_id(int data_id) {
        this.data_id = data_id;
    }
    /**
     * @return the data_id
     */
    public int getData_id() {
        return data_id;
    }
    public void setValue_length(int value_length) {
        this.value_length = value_length;
    }
    public int getValue_length() {
        return value_length;
    }
    public void setValue_name(String value_name) {
        this.value_name = value_name;
    }
    public String getValue_name() {
        return value_name;
    }
    public void setColumn_name(String column_name) {
        this.column_name = column_name;
    }
    public String getColumn_name() {
        return column_name;
    }
    public void setValue_type(int value_type) {
        this.value_type = value_type;
    }
    public int getValue_type() {
        return value_type;
    }
    public void setOrder_no(int order_no) {
        this.order_no = order_no;
    }
    public int getOrder_no() {
        return order_no;
    }
    public void setColumn_id(int column_id) {
        this.column_id = column_id;
    }
    public int getColumn_id() {
        return column_id;
    }

}
时间: 2024-10-09 13:47:35

java通过jdbc操作Excel的相关文章

JAVA使用POI操作excel

这里提一下,java操作excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org. poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格 下面是一个简单的写入的demo public static void main(String [] args){ try { HSSFWorkbook

Java使用Jdbc操作MySql数据库(一)

这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. 一.首先将mysql-connector-java-5.1.26-bin.jar开发包复制到lib文件夹中,并且Build Path->Add Build Path. 二.创建User类,用于封装从数据库读出来的数据. 1 package com.mylx.database; 2 3 public

Java生成和操作Excel文件(转载)

Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

JAVA的POI操作Excel

1.1Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推.行则使用数字表示,例如:A3 表示第三行第一列,E5表示第五行第五列. 1.2 POI工具包 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Exce

Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

(一)JAVA使用POI操作excel

1,Poi 简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能 POI为“Poor Obfuscationmplementation”的首字母缩写,意为“可怜的模糊实现”. Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修改M

(转载)Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

Java生成和操作Excel文件 - 残星 - 博客园 (2)

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;