问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在excel中添加数据库内的数据

发布网友 发布时间:2022-04-23 02:43

我来回答

2个回答

懂视网 时间:2022-05-02 00:07

为了熟悉java里工作簿的相关知识点,所以找了“Excel向数据库插入数据和数据库向Excel导出数据”的功能来实现。

注意事项:1,mysql数据库;

              2,需要导入的jar包有 jxl.jar,mysql-connector-java-5.1.22-bin.jar,ojdbc6.jar

代码如下:

一, 建立数据库名称 javaforexcel,建立表stu

DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `sex` char(2) DEFAULT NULL,
  `num` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

二 ,建实体类

package com.excel.model;

public class Stu {
 private int id;//ID
 private String name;//姓名
 private String sex;//性别
 private int num;//工资
public Stu(int id, String name, String sex, int num) {
    this.id = id;
    this.name = name;
    this.sex = sex;
    this.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;
}
 
}
三,建立数据库连接,这里只是简单的测试,本来应该写在common包,我就写在dao包里边了

package com.excel.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBhelper {
 Connection con=null;
 ResultSet res=null;
 PreparedStatement pre=null;
 
 //连接数据库
 public void DBbase(){
     try {
        String driver="com.mysql.jdbc.Driver";
        String url="jdbc:mysql://127.0.0.1:3306/javenforexcel";
        String userName="root";
        String passWord="";
        
        Class.forName(driver);
        con=DriverManager.getConnection(url,userName,passWord);
    } catch (Exception e) {
        e.printStackTrace();
    }
 }
 
 //查询
 public ResultSet Search(String sql,String args[]){
     DBbase();
     try {
        pre=con.prepareStatement(sql);
        if(args!=null){
            for(int i=0;i<args.length;i++){
                pre.setString(i+1, args[i]);
            }
        }
        res=pre.executeQuery();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return res;
 }
 
 //增删改
 public int Adu(String sql,String args[]){
     int falg=0;
     DBbase();
     try {
        pre=con.prepareStatement(sql);
        if(args!=null){
            for(int i=0;i<args.length;i++){
                pre.setString(i+1, args[i]);
            }
        }
        falg=pre.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return falg;
 }
 
}
四,事务层方法如下:

package com.excel.service;

import java.io.File;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import jxl.Sheet;
import jxl.Workbook;

import com.excel.dao.DBhelper;
import com.excel.model.Stu;


public class StuService {
/*
 * 查询stu表中左右数据
 */
    public static List<Stu> getAllByDB(){
        List<Stu> list=new ArrayList<Stu>();
        try {
            DBhelper dBhelper=new DBhelper();
            String sql="select * from stu";
            ResultSet rs=dBhelper.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");
                
                list.add(new Stu(id, name, sex, num));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
    
    /**
     * 查询指定目录中电子表格中所有的数据
     * @param file 文件完整路径
     * @return
     */
    public static List<Stu> getAllByExcel(String file){
        
        List<Stu> stus=new ArrayList<Stu>();
        try {
            Workbook wb=Workbook.getWorkbook(new File(file));
            Sheet sheet=wb.getSheet("Test");
            int cols=sheet.getColumns();//得到总的列数
            int rows=sheet.getRows();//得到总的行数
            
            System.out.println("列数:"+cols+" 行数:"+rows);
            for(int i=1;i<rows;i++){
                for (int j = 0; j < cols; j++) {
                    //第一个是列数,第二个是行数
                    String id=sheet.getCell(j++, i).getContents();//默认最左边编号也算一列 所以这里得j++
                    String name=sheet.getCell(j++,i).getContents();
                    String sex=sheet.getCell(j++,i).getContents();
                    String num=sheet.getCell(j++,i).getContents();
                    
                    System.out.println("id:"+id+" name:"+name+" sex:"+sex+" num:"+num);
                    stus.add(new Stu(Integer.parseInt(id), name, sex, Integer.parseInt(num)));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stus;
    }
    
    /**
     * 通过Id判断是否存在
     * @param id
     * @return
     */
    public static boolean isExist(int id){
        boolean flag=false;
        try {
            DBhelper dB=new DBhelper();
            ResultSet rs=dB.Search("select * from stu where id=?", new String[]{id+""});
            if (rs.next()) {
                flag=true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
}
五,数据库向Excel里导入数据

package com.excel.control;


import java.io.File;
import java.util.List;


import com.excel.model.Stu;
import com.excel.service.StuService;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class DBInExcel {
public static void main(String[] args) {
    try {
        WritableWorkbook rb = null;//创建一个可写的Workbook
        WritableSheet    ws = null;// 创建工作表
        String FileName = "C://Users//lidelin//Desktop//test.xls";//创建可写入的Excel工作簿地址及名称
        File file=new File(FileName);
        if(!file.exists()){
            file.createNewFile();
        }
        rb = Workbook.createWorkbook(file);//以fileName为文件名来创建一个Workbook
        ws = rb.createSheet("Test", 0);
        
        List<Stu> stus=StuService.getAllByDB();//查询数据库中所有的数据
        
        
        //行和列都是0开始
        Label laId=new Label(0, 0,"编号ID");//1列1行
        Label laName=new Label(1, 0,"姓名Name");//2列1行
        Label laSex=new Label(2, 0,"性别Sex");//3列1行
        Label laNum=new Label(3, 0,"姓名Num");//4列1行
        
        ws.addCell(laId);
        ws.addCell(laName);
        ws.addCell(laSex);
        ws.addCell(laNum);
        for(int i=0;i<stus.size();i++){
            Label labelId_i= new Label(0, i+1, stus.get(i).getId()+"");
            Label labelName_i=new Label(1,i+1,stus.get(i).getName()+"");
            Label labelSex_i= new Label(2, i+1, stus.get(i).getSex());
            Label labelNum_i= new Label(3, i+1, stus.get(i).getNum()+"");
            
            ws.addCell(labelId_i);
            ws.addCell(labelName_i);
            ws.addCell(labelSex_i);
            ws.addCell(labelNum_i);
        }
        rb.write();//写进文档
        System.out.println("已经将数据写入指定文件,请查看!");
        rb.close();//关闭Excel工作簿对象
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}
六,Excel向数据库导入数据

package com.excel.control;

import java.util.List;

import com.excel.dao.DBhelper;
import com.excel.model.Stu;
import com.excel.service.StuService;

public class ExcelInDB {
public static void main(String[] args) {
    List<Stu> stus=StuService.getAllByExcel("C://Users//lidelin//Desktop//test.xls");//查询数据库中所有的数据
    DBhelper dB=new DBhelper();
    
    for (Stu stu:stus) {
        int id=stu.getId();
        if (!StuService.isExist(id)) {//不存在就添加
            String sql="insert into stu (name,sex,num) values (?,?,?)";
            String[] str={stu.getName(),stu.getSex(),stu.getNum()+""};
            dB.Adu(sql, str);
        }else {//存在就更新
            String sql="update stu set name=?,sex=?,num=? where id=?";
            String[] str={stu.getName(),stu.getSex(),stu.getNum()+"",id+""};
            dB.Adu(sql, str);
        }
    }
}
}
笔者水平有限,难免有错误,仅供参考!

Excel向数据库插入数据和数据库向Excel导出数据

标签:size   void   class   工作表   ack   getc   add   dstat   column   

热心网友 时间:2022-05-01 21:15

1)打开你的sql server,找到要导入数据的数据库,右键——〉任务——〉导入数据

2)按照图示选择要导入的excel

3)选择导入到哪个数据库

4)导入excel选择第一项即可,选择第二项是表与表直接内容的筛选复制

5)选择源表和源视图

6)编辑映射页面

7
7)继续下一步,点击完成,看到传输数据完成页面
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...油桶横放长6、25米,圆的直径为2、05米,液体横放的高度为1、8米。求... 一个圆桶半径为1.2米,高为12米,现将油桶平放,此时装油的高度为1.722米... 大油桶是横放的,油桶圆的直径是2.15米,长是3.6米,里面的净油位高度... 一个圆柱油桶横着放,长5.5米,直径2.4米,里面装着油,油高度1米,求现在... 有一个圆柱体桶横放,长7米,高2.7米,里面装的油与油桶距离1.2米,求油的... 圆柱形油桶横放时油部分占底面圆周的三分之一当油桶直立油的高度和桶... 有一个圆柱体桶横放 有一个圆柱体桶横放 长9.4米 高2.6米 里面装的油与桶底距离0.6米,求里 ... 电脑单独安装outlook教程如何在电脑上安装outlook 直角转弯为什么会压角 excel图表数据源怎么插入 土豆切成方块,用开水抄后,凉那自己就变红了 土豆切滚刀块真的更容易熟吗?为什么 请问oppo pckmoo是什么型号? 土豆怎么切丁? 土豆的切法 土豆怎样切出正方体,长方体,五棱柱 土豆如何切出一个正方体? 怎么用Premiere CC导入用延时摄影拍下来的图片? pr这怎么导入图片 adobe premiere pro在电脑上如何插入图片 PPT做的图片放映文件怎样可以导入到PR中? pr上,怎么在已有图片上添加背景图?麻烦大神能仔细说说步骤,谢谢_百度... adobe premiere里怎么导入图片 怎么给视频添加背景图片? Adobe Premiere 加字幕的同时 如何加图片进去? 为什么老是收到乱码短信 手机怎么老是收到莫名其妙的彩信 总是收到垃圾短信怎么办? 为什么我手机上老是收到那些赌博垃圾短信? 如何把excel表中大量数据插入数据库 如何把Excel表中数据导入数据库? 相册制作软件哪个最好,是免费版的 ddos是怎么实现的?如何防御? 新的一年,ddos攻击还存在哪些威胁 免费且比较好用的电子相册制作软件!! 全球最大比特币交易所遭黑客攻击了吗? 求免费的电子相册制作软件 比特币交易所遭遇黑客攻击是什么情况? 真正免费的电子相册制作软件 大币网(Dcoin)交易平台是不是合规的啊? 什么是比特币延展性攻击? gcb币最新价格GCB虚拟货币靠谱吗?目前多少钱?在哪里能买到? 网站被ddos攻击了怎么办? 哪个比特币交易所安全性高? 如果比特币平台倒闭了怎么办? 我们网站被ddos攻击了怎么办呀,我们是做区块链的呀网站打不开,现在要怎么解决呢? 服务器被ddos打死了怎么办,如何应对ddos攻击 火币网交易平台安全吗? 为什么需要高防服务器