zoukankan      html  css  js  c++  java
  • 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;
        }
        
        
    }
  • 相关阅读:
    sprinf sprintf_s 的用法
    c++中static的用法详解
    C++数值类型与string的相互转换
    setTimeout(function(){}, 0);
    学习 Node.js 的 6 个步骤
    $destroy——angular
    模态框——angular
    日期控件
    前端加密
    ui-router
  • 原文地址:https://www.cnblogs.com/huanhuanang/p/4274009.html
Copyright © 2011-2022 走看看