Java如何讀取Excel中在值,存入到Mysql數據庫

一個讀取Excel中在值,然後將Excel的值插入到MySql庫中。


import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class CopyOfReadData {

    @SuppressWarnings("unchecked")
    public void createData(String path,String sheetname){
        try {
            String sourcefile = path;
            InputStream is = new FileInputStream(sourcefile);
            Workbook rwb = Workbook.getWorkbook(is);
            
            //get sheet
            Sheet sheet = rwb.getSheet(sheetname);
            //System.out.println(sheet.getName());
            
            //get rows
            int cr =sheet.getRows();
            
            String header = "";
            String preheader = "";
            List<String> fieldsList = new ArrayList<String>();
            List dataList = new ArrayList();
            for(int i = 0;i<cr;i++){
                Cell[] testcell  = sheet.getRow(i);
                
                if(testcell.length == 0) continue;
                if(!header.equals(preheader)){
                    fieldsList.clear();
                    preheader = header;
                }
                String tempString  = testcell[0].getContents();
                int datatype = tempString.indexOf("&&");
                if(datatype != -1 ) continue;

                System.out.println("第"+i+"行------");
                //get cells of row
                for (int j = 0; j < testcell.length; j++) {
                    String str1 = testcell[j].getContents();
                    
                    if(str1 != null && !"".equals(str1)){
                        
                        int fields = str1.indexOf("#");
                        int cheader = str1.indexOf("**");
//                        int coment = str1.indexOf("$$");
                        //int datatype = str1.indexOf("&&");
                        int length = str1.length();
                        //get table name
                        if(cheader != -1){
                            header = str1.substring(cheader+2, length);
                        }else if(fields != -1){
                            fieldsList.add(str1.substring(fields+1, length));
                        }else{
                            dataList.add(str1);
                        }
                    }

                }
                if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
                    deleteData(header,dataList);
                    System.out.println("成功刪除");
                    inserData(header,fieldsList,dataList);
                    System.out.println("成功插入");
                    dataList.clear();
                }
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
    }
    
    public void deleteDataByid(String path,String sheetname){
        try {
            String sourcefile = path;
            InputStream is = new FileInputStream(sourcefile);
            Workbook rwb = Workbook.getWorkbook(is);
            
            //get sheet
            Sheet sheet = rwb.getSheet(sheetname);
            //System.out.println(sheet.getName());
            
            //get rows
            int cr =sheet.getRows();
            
            String header = "";
            String preheader = "";
            List<String> fieldsList = new ArrayList<String>();
            List dataList = new ArrayList();
            for(int i = 0;i<cr;i++){
                Cell[] testcell  = sheet.getRow(i);
                
                if(testcell.length == 0) continue;
                if(!header.equals(preheader)){
                    fieldsList.clear();
                    preheader = header;
                }
                String tempString  = testcell[0].getContents();
                int datatype = tempString.indexOf("&&");
                if(datatype != -1 ) continue;

                System.out.println("第"+i+"行------");
                //get cells of row
                for (int j = 0; j < testcell.length; j++) {
                    String str1 = testcell[j].getContents();
                    
                    if(str1 != null && !"".equals(str1)){
                        
                        int fields = str1.indexOf("#");
                        int cheader = str1.indexOf("**");
//                        int coment = str1.indexOf("$$");
                        //int datatype = str1.indexOf("&&");
                        int length = str1.length();
                        //get table name
                        if(cheader != -1){
                            header = str1.substring(cheader+2, length);
                        }else if(fields != -1){
                            fieldsList.add(str1.substring(fields+1, length));
                        }else{
                            dataList.add(str1);
                        }
                    }

                }
                if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
                    deleteData(header,dataList);
                    System.out.println("成功刪除");
//                    inserData(header,fieldsList,dataList);
//                    System.out.println("成功插入");
                    dataList.clear();
                }
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
    }
    
    public void deleteData(String header,List dataList){
        try {
            String sql = "delete from "+header + " where 1=1 and id = "+dataList.get(0);
            excute(sql);
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        
    }
    
    
    public int inserData(String header,List<String> fieldsList,List<String> dataList){
        StringBuffer sql = new StringBuffer("insert into ");
        sql.append(header+" (");
        for(int i = 0; i<fieldsList.size();i++){
            sql.append(fieldsList.get(i)+",");
            
        }
        sql.delete(sql.length()-1, sql.length());
        sql.append(") values(");
        
        for(int i = 0; i<dataList.size();i++){
            sql.append("'"+dataList.get(i)+"',");
        }
        
        sql.delete(sql.length()-1, sql.length());
        sql.append(")");
        
        excute(sql.toString());
        
        return 0;
    }
    
    
    private void excute(String sql){
        //載入Oracle驅動程序
        try {
            //Class.forName("oracle.jdbc.OracleDriver").newInstance();
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
            System.out.println("載入MySQL數據庫驅動時出錯");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            System.out.println("載入MySQL數據庫驅動時出錯");
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
            System.out.println("載入MySQL數據庫驅動時出錯");
        }
        /////////////////////////////////////////////////////////////////////////
        
        //連接到Oracle數據庫
        java.sql.Connection conn = null;
        try{
            //連接Oracle數據庫
//            conn = java.sql.DriverManager.getConnection(
//                    "jdbc:oracle:thin:@192.168.1.2:1521:dbname", "username", "password");

          //連接Mysql庫

              conn = java.sql.DriverManager.getConnection(

                    "jdbc:mysql://localhost/cookbook", "root", "");
        } catch (Exception ex){
            ex.printStackTrace();
            System.out.println("連接到MySQL數據庫時出錯!");
            System.exit(0);
        }
        ////////////////////////////////////////////////////////////////////////
        
        //得到MySQL操作流
       
        try {
            System.out.println("-----------------  "+sql);
            java.sql.PreparedStatement stat = conn.prepareStatement(sql);
            boolean rs = stat.execute();
            
        } catch(Exception ex) {
            ex.printStackTrace();
            System.exit(0);
        }
        
        //關半程序所佔用的資源
        try{
            conn.close();
        }catch(Exception ex){
            ex.printStackTrace();
            System.out.println("關閉程序所佔用的資源時出錯");
            System.exit(0);
        }
    }

    
    public List<String> getData(String path,String sheetname){
        
        List<String> dataList = new ArrayList();
        try {
            String sourcefile = path;
            InputStream is = new FileInputStream(sourcefile);
            Workbook rwb = Workbook.getWorkbook(is);
            
            //get sheet
            Sheet sheet = rwb.getSheet(sheetname);
            //System.out.println(sheet.getName());
            
            //get rows
            int cr =sheet.getRows();
            
            String header = "";
            List<String> fieldsList = new ArrayList<String>();
            
            for(int i = 0;i<cr;i++){
                Cell[] testcell  = sheet.getRow(i);
                
                //get cells of row
                for (int j = 0; j < testcell.length; j++) {
                    String str1 = testcell[j].getContents();
                    
                    if(str1 != null && !"".equals(str1)){
                        
                        int fields = str1.indexOf("#");
                        int cheader = str1.indexOf("**");
                        int length = str1.length();
                        //get table name
                        if(cheader != -1){
                            header = str1.substring(cheader+2, length);
                        }else if(fields != -1){
                            fieldsList.add(str1.substring(fields+1, length));
                        }else{
                            dataList.add(str1);
                        }
                    }

                }
            }
            

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
        return dataList;
        
    }
    
    public void deleteData(String path,String sheetname){
        
        try {
            String sourcefile = path;
            InputStream is = new FileInputStream(sourcefile);
            Workbook rwb = Workbook.getWorkbook(is);
            
            //get sheet
            Sheet sheet = rwb.getSheet(sheetname);
            //System.out.println(sheet.getName());
            
            //get rows
            int cr =sheet.getRows();
            
            for(int i = 0;i<cr;i++){
                String header = "";
                Cell[] testcell  = sheet.getRow(i);
                
                //get cells of row
                for (int j = 0; j < testcell.length; j++) {
                    String str1 = testcell[j].getContents();
                    
                    if(str1 != null && !"".equals(str1)){
                        
                        int cheader = str1.indexOf("**");
                        int length = str1.length();
                        //get table name
                        if(cheader != -1){
                            header = str1.substring(cheader+2, length);
                            String sql = "delete from "+header;
                            excute(sql);
                        }
                    }

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

        
    }


}


2、測試類

public class CopyOfDataIndert {

    /**
     * @param args
     */
    public static void main(String[] args) {
        CopyOfReadData readData = new CopyOfReadData();
                
        //造數據----------------------------------------------------------
        String path = "E:/09.testdata/xxx.xls";

        readData.createData(path, "yxl");

//刪除數據
//        readData.deleteDataByid(path, "md_data");
//        readData.deleteData(path, "delete_data");
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章