Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载 自学资料总结 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1、

来源:互联网 发布:tsp问题蚁群算法总结 编辑:程序博客网 时间:2024/05/29 07:00

Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载

自学资料总结 

实现的功能:

  • Java实现Excel导入数据库,如果存在就更新
  • 数据库中的数据导入到Excel

 

1、添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­

2、Excel文件目录:D://book.xls

3、数据库名:javenforexcel

4、表名:stu

5、编写类:连接mysql的字符串方法、插入的方法、实体类­­

表结构如下 :

 

 

 

连接数据库的工具类

复制代码
复制代码
package com.javen.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class DBhepler {    /*String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";    String url = "jdbc:sqlserver://127.0.0.1;DatabaseName=javenforexcel";*/        String driver = "com.mysql.jdbc.Driver";    String url = "jdbc:mysql://127.0.0.1:3306/javenforexcel";            Connection con = null;    ResultSet res = null;    public void DataBase() {            try {                Class.forName(driver);                con = DriverManager.getConnection(url, "root", "root");            } catch (ClassNotFoundException e) {                // TODO Auto-generated catch block                  System.err.println("装载 JDBC/ODBC 驱动程序失败。" );                  e.printStackTrace();            } catch (SQLException e) {                // TODO Auto-generated catch block                System.err.println("无法连接数据库" );                 e.printStackTrace();            }    }    // 查询    public ResultSet  Search(String sql, String str[]) {        DataBase();        try {            PreparedStatement pst =con.prepareStatement(sql);            if (str != null) {                for (int i = 0; i < str.length; i++) {                    pst.setString(i + 1, str[i]);                }            }            res = pst.executeQuery();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return res;    }    // 增删修改    public int AddU(String sql, String str[]) {        int a = 0;        DataBase();        try {            PreparedStatement pst = con.prepareStatement(sql);            if (str != null) {                for (int i = 0; i < str.length; i++) {                    pst.setString(i + 1, str[i]);                }            }            a = pst.executeUpdate();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return a;    }}
复制代码
复制代码

 

表的实体如下

复制代码
复制代码
package com.javen.entity;/** * @author Javen * @Email zyw205@gmail.com *  */public class StuEntity {    private int id;    private String name;    private String sex;    private int num;                public StuEntity() {    }    public StuEntity(int id, String name, String sex, int num) {        this.id = id;        this.name = name;        this.sex = sex;        this.num = num;    }        @Override    public String toString() {        return "StuEntity [id=" + id + ", name=" + name + ", sex=" + sex                + ", num=" + num + "]";    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public int getNum() {        return num;    }    public void setNum(int num) {        this.num = num;    }                }
复制代码
复制代码

Java实现Excel导入数据核心类 读取Excel表中所有的数据、操作数据(查询、更新)

复制代码
复制代码
package com.javen.service;import java.io.File;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import jxl.Sheet;import jxl.Workbook;import com.javen.db.DBhepler;import com.javen.entity.StuEntity;/** * @author Javen * @Email zyw205@gmail.com *  */public class StuService {    /**     * 查询stu表中所有的数据     * @return      */    public static List<StuEntity> getAllByDb(){        List<StuEntity> list=new ArrayList<StuEntity>();        try {            DBhepler db=new DBhepler();            String sql="select * from stu";            ResultSet rs= db.Search(sql, null);            while (rs.next()) {                int id=rs.getInt("id");                String name=rs.getString("name");                String sex=rs.getString("sex");                int num=rs.getInt("num");                                //System.out.println(id+" "+name+" "+sex+ " "+num);                list.add(new StuEntity(id, name, sex, num));            }                    } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return list;    }        /**     * 查询指定目录中电子表格中所有的数据     * @param file 文件完整路径     * @return     */    public static List<StuEntity> getAllByExcel(String file){        List<StuEntity> list=new ArrayList<StuEntity>();        try {            Workbook rwb=Workbook.getWorkbook(new File(file));            Sheet rs=rwb.getSheet("Test Shee 1");//或者rwb.getSheet(0)            int clos=rs.getColumns();//得到所有的列            int rows=rs.getRows();//得到所有的行                        System.out.println(clos+" rows:"+rows);            for (int i = 1; i < rows; i++) {                for (int j = 0; j < clos; j++) {                    //第一个是列数,第二个是行数                    String id=rs.getCell(j++, i).getContents();//默认最左边编号也算一列 所以这里得j++                    String name=rs.getCell(j++, i).getContents();                    String sex=rs.getCell(j++, i).getContents();                    String num=rs.getCell(j++, i).getContents();                                        System.out.println("id:"+id+" name:"+name+" sex:"+sex+" num:"+num);                    list.add(new StuEntity(Integer.parseInt(id), name, sex, Integer.parseInt(num)));                }            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }         return list;            }        /**     * 通过Id判断是否存在     * @param id     * @return     */    public static boolean isExist(int id){        try {            DBhepler db=new DBhepler();            ResultSet rs=db.Search("select * from stu where id=?", new String[]{id+""});            if (rs.next()) {                return true;            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return false;    }        public static void main(String[] args) {        /*List<StuEntity> all=getAllByDb();        for (StuEntity stuEntity : all) {            System.out.println(stuEntity.toString());        }*/                System.out.println(isExist(1));            }    }
复制代码
复制代码

数据的数据导入到Excel表

复制代码
复制代码
package com.javen.excel;import java.io.File;import java.util.List;import com.javen.entity.StuEntity;import com.javen.service.StuService;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class TestDbToExcel {    public static void main(String[] args) {        try {            WritableWorkbook wwb = null;                            // 创建可写入的Excel工作簿               String fileName = "D://book.xls";               File file=new File(fileName);               if (!file.exists()) {                   file.createNewFile();               }               //以fileName为文件名来创建一个Workbook               wwb = Workbook.createWorkbook(file);               // 创建工作表               WritableSheet ws = wwb.createSheet("Test Shee 1", 0);                              //查询数据库中所有的数据               List<StuEntity> list= StuService.getAllByDb();               //要插入到的Excel表格的行号,默认从0开始               Label labelId= new Label(0, 0, "编号(id)");//表示第               Label labelName= new Label(1, 0, "姓名(name)");               Label labelSex= new Label(2, 0, "性别(sex)");               Label labelNum= new Label(3, 0, "薪水(num)");                              ws.addCell(labelId);               ws.addCell(labelName);               ws.addCell(labelSex);               ws.addCell(labelNum);               for (int i = 0; i < list.size(); i++) {                                      Label labelId_i= new Label(0, i+1, list.get(i).getId()+"");                   Label labelName_i= new Label(1, i+1, list.get(i).getName());                   Label labelSex_i= new Label(2, i+1, list.get(i).getSex());                   Label labelNum_i= new Label(3, i+1, list.get(i).getNum()+"");                   ws.addCell(labelId_i);                   ws.addCell(labelName_i);                   ws.addCell(labelSex_i);                   ws.addCell(labelNum_i);               }                           //写进文档               wwb.write();              // 关闭Excel工作簿对象               wwb.close();                     } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }}
复制代码
复制代码

Excel表中的数据导入到MySql数据库

 

复制代码
复制代码
package com.javen.excel;import java.util.List;import com.javen.db.DBhepler;import com.javen.entity.StuEntity;import com.javen.service.StuService;/** * @author Javen * @Email zyw205@gmail.com *  */public class TestExcelToDb {    public static void main(String[] args) {        //得到表格中所有的数据        List<StuEntity> listExcel=StuService.getAllByExcel("d://book.xls");        /*//得到数据库表中所有的数据        List<StuEntity> listDb=StuService.getAllByDb();*/                DBhepler db=new DBhepler();                for (StuEntity stuEntity : listExcel) {            int id=stuEntity.getId();            if (!StuService.isExist(id)) {                //不存在就添加                String sql="insert into stu (name,sex,num) values(?,?,?)";                String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+""};                db.AddU(sql, str);            }else {                //存在就更新                String sql="update stu set name=?,sex=?,num=? where id=?";                String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+"",id+""};                db.AddU(sql, str);            }        }    }}
复制代码

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 游泳时眼镜起雾怎么办 练瑜伽手臂变粗怎么办 孕妇喝了芬达怎么办 宫口开了但头高怎么办 整天坐着肚子越来越大怎么办 坐久了屁股变大怎么办 屁股久坐的黑印怎么办 练瑜伽小腿变粗怎么办 练瑜伽腿粗了怎么办 练完瑜伽腿粗怎么办 肚子大屁股大腿粗怎么办 甲状腺偏大弥漫性欠均匀怎么办 大腿后侧拉伤了怎么办 腰和臀部都疼怎么办 瑜伽后弯后腰疼怎么办? 吃了大蒜肝痛怎么办 练瑜伽前躯不行怎么办 月子里碰冷水了怎么办 月子手碰凉水了怎么办 月子里碰了冷水怎么办 顺产后下面会痛怎么办 产后肚子瘦不下来怎么办 出月子后臀部很疼怎么办 做月子时臀部疼怎么办 月子臀部大腿疼困怎么办 产后抱孩子腰疼怎么办 剖腹产后5年小肚子很大怎么办 压力大工作忙瘦了怎么办? 哺乳乳房一大一小怎么办 哺乳期乳房一大一小怎么办 上班之后奶少了怎么办 出了月子还流恶露怎么办? 剖腹产2年刀疤痒怎么办 刨宫产6天伤口痒怎么办 脸的皮肤油油的怎么办 狗狗子宫蓄脓怎么办 刮宫后子宫壁薄怎么办 产妇有痔疮怎么办很疼 二胎着床在剖腹产切口怎么办 刨腹产3月后怀孕怎么办 破腹产两年了肚子还是很大怎么办