今天公司让实现两个Excel文件通过某种特定的规则合并成一个文件。要实现这个功能的第一步就是将Excel导入到数据库之中。
下面总结一下将Excel导入到数据库的具体步骤。(java程序)

1:明确所需要的类
这里我使用了三个类:
Ⅰ:DBUtil类。这个类是个工具类,主要负责,连接数据库、搜索……等操作数据库的行为。
Ⅱ:InputExcel类。这个类的主要作用是负责上传,解析Excel表等对Excel表进行‘预操作’的行为
Ⅲ:Model类。这个类是一个模型,里面全是get()、set()方法等。主要起一个‘桥梁’的作用。

这样我们就可以将InputExce类中方法获得的数据通过Model传给数据库,也可以将数据库的数据传给Model,再来获取这些数据。

2:明确需要的jar包和相关的知识
对Excel进行操作的的方法有两种,这两种方法对应的jar包各不相同。这里我们使用‘jxl’来对Excel进行操作。因此我们需要“jxl.jar”这个包,找不到的话可以去maven的网站上直接下载就行。

简单说下jxl的基本对象代表的相应含义:

Workbook 这个对象代表的是整个Excel文件。例如:Workbook a=Workbook.getWorkbook(new File(“相应的文件路径”))。此时对象a便可以近似的看作是这个Excel文件。
Sheet 这个对象代表的是当前文件下的第几个工作簿。例如:Sheet rs=a.getSheet(0);此时rs便代表第一个工作簿。
Cell 代表的是当前工作簿下的某个表格。例如Cell cel=rs.getCell(0,2);此时cel代表的是第1列第3行的那个表格。(注:Excel表中的第一列是前面的数字,第一行是最上面的字母。)随后便可以通过cel.getContents().方法来获取该表格中的数据。

3:写代码

Model的代码不必多说,下面是我的Model代码:

public class K3Model {String id;String name; String typeString;String number;String status;  public K3Model(String id,String name,String typeString,String number,String status) {// TODO Auto-generated constructor stubthis.id=id;this.name=name;this.typeString=typeString;this.number=number;this.status=status;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getTypeString() {return typeString;}public void setTypeString(String typeString) {this.typeString = typeString;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}@Overridepublic String toString() {return "K3Model [id=" + id + ", name=" + name + ", typeString=" + typeString + ", number=" + number+ ", status=" + status + "]";}
}

DBUti类,下面是我的代码实现

package cn.wintec.util;import java.sql.*;
public class DBhelper {Connection conn=null;ResultSet rSet=null;public void connect(){try {//这里输入相应的驱动名称(你用的mysql就输入mysql的,用的sqlsever的就输入sqlsever的。别忘了装上相应驱动的jar包)Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//这里用来输入相应的连接ip与对应数据库的账号密码。            conn=DriverManager.getConnection("jdbc:sqlserver://192.122.11.221:1433;DatabaseName=k3excel;IntegratedSecurity=false","username","password");          } catch (ClassNotFoundException e) {// TODO: handle exceptioSystem.out.println("数据库驱动不可用");e.printStackTrace();                       }catch (SQLException e) {// TODO: handle exceptionSystem.out.println("连接大失败!!");            e.printStackTrace();}       }public ResultSet  Search(String sql,String str[]) {/*这里不能用连接函数,因为我们Search往往不会仅仅只调用一次。如果我们的数据比较多的话就会不断的重复调用该方法,最后会导致数据库分配过多而拒绝访问。下面的也是同理*///connect();try {//这里我们将带有‘?’    的失去了语句压入PreparedStatement对象。PreparedStatement pst=conn.prepareStatement(sql);          for (int i = 0; i <= str.length-1; i++) {//这里我们将相对应的‘?’匹配上字符。第一个参数表示的是第几个‘?’进行匹配,第二个参数表示匹配的内容。pst.setString(i+1,str[i]);}//executeQuery();用于insert、update、delete等方法的执行,但是不能用于select的执行。rSet=pst.executeQuery();} catch (Exception e) {// TODO: handle exception//e.printStackTrace();System.out.println("搜索错误");}        return rSet;    }public int Addu(String sql ,String str[]){int a=-1;//不能放在这里,因为会出现连接次数过多从而导致程序崩溃//connect();    try {//同上理PreparedStatement pStatement=conn.prepareStatement(sql);if (str!=null) {for (int i = 0; i <= str.length-1; i++) {//同上理pStatement.setString(i+1,str[i]);     }}//executeUpdate();负责执行select的SQL语句。a=pStatement.executeUpdate();} catch (Exception e) {// TODO: handle exceptionSystem.out.println("SQL语句出现错误"+a);e.printStackTrace();        }       return a;}
}

InputExcel类,下面是我的代码实现

package cn.com.wintec.controller;import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import cn.com.wintec.entity.K3Model;
import cn.wintec.util.DBhelper;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;//负责数据中的各种操作
public class InputExcel {//这个方法用于获得数据库中的数据public static List<K3Model> getAllByDb() {//将获得的数据用Model类存储起来。List<K3Model> list=new ArrayList<K3Model>(); //创建对数据库操作的工具类DBhelper db=new DBhelper();String sql="select * from TMPITEM";//连接数据库db.connect();//执行相应的sql语句,将select的搜索集合使用ResultSet对象接收。ResultSet rSet=db.Search(sql, null);try {//遍历ResultSet对象while (rSet.next()){//根据数据库中的列名获取相应的数据。(使用的get方法要对应相应的类型)String id=rSet.getInt("id");String name=rSet.getString("name");String typeString=rSet.getString("typeString");String number=rSet.getString("number");String status=rSet.getString("status");//将获取的数据添加到Model对象的list里。list.add(new K3Model(id, name, typeString, number, status));                }} catch (Exception e) {// TODO: handle exception}//返回搜索到的所有数据return    list;}//这个方法用于获取Excel表中的数据(但是不将其存入数据库)public static List<K3Model> getAllByExcel(String file){//list对象List<K3Model> list =new ArrayList<K3Model>();try {//创建excel表对象Workbook rwb=Workbook.getWorkbook(new File(file));//创建工作表对象    Sheet rs=rwb.getSheet(0);//获取工作表的行数int clos=rs.getColumns();//获取工作表的列数int rows=rs.getRows();for (int i = 1; i < rows; i++) {int j=0;//获取第二列第二行(也就是第一个表格)的数据。String id=rs.getCell(j++,i).getContents();//获取第三列第二行(也就是第二个表格)的数据。String name=rs.getCell(j++,i).getContents();String typeString=rs.getCell(j++,i).getContents();String number=rs.getCell(j++,i).getContents();String status=rs.getCell(j++,i).getContents();               //  System.out.println("id:"+id+"  name:"+name+" typeString:"+typeString+" num:"+number+" status:"+status);//将相应的数据放入Model的list中list.add(new K3Model(id, name, typeString, number, status));}            } catch (IOException e) {System.out.println("文件读取出现问题");// TODO: handle exception} catch (BiffException e) {// TODO Auto-generated catch blockSystem.out.println("JXL使用出现问题");} return list;}//这个类起的是一个判断作用,输入的id是否存在在数据库之中public static boolean isExist(String id,DBhelper dBhelper){try {//使用上面的Serch方法来返回一个搜索结果ResultSet rSet=  dBhelper.Search("select * from TMPITEM where FNumber=?", new String[]{id});  //如果存在这个搜索结果则返回trueif (rSet.next()) {return true;}} catch (Exception e) {// TODO: handle exception}//如果结果不存在则返回falsereturn false;           }
}

下面是使用这几个类来将excel导入数据库的实例代码

//提交k3文档,这里使用注解设置映射路径@ResponseBody@RequestMapping(value="K3fileUpload", produces = "application/json;charset=UTF-8")public static void  inputExcel(HttpServletRequest request) {//获取前段传过来的文件路径String file = request.getParameter("cs");System.out.println("file===="+file);//获取这个路径对应Excel文件中的内容List<K3Model> listExcel=InputExcel.getAllByExcel(file);//创建数据库工具类实例对象DBhelper dBhelper=new DBhelper();//连接数据库dBhelper.connect();//迭代K3Model类型的链表(这里一个model其实就是对应了一行Excel)for (K3Model k3Model:listExcel) {//获取相应的数据String  id=k3Model.getId();//判断要插入的数据是否已经存在if (!InputExcel.isExist(id,dBhelper)) {String sql="insert into TMPITEM(FNumber,FName,FModel) values(?,?,?)";String[] str=new String[]{k3Model.getId(),k3Model.getName(),k3Model.getTypeString()};//System.out.println("-----------in-------------------"+str.toString());//将设置的sql语句与字符串传入相应的方法dBhelper.Addu(sql, str);}else{//同上理String sql="update TMPITEM set FName=?,FModel=? where FNumber=?";String[] str=new String[]{k3Model.getName(),k3Model.getTypeString(),id};//System.out.println("------------up------------------"+str.toString());dBhelper.Addu(sql, str);}}System.out.println("数据更新成功");     }

如此整个Excel导入的后台代码全部完成。在前端只需要想办法调用inputExcel()方法,再传入需要导入的excel文件的路径就可以完成这次导入。

将Excel文件导入到数据库中相关推荐

  1. excel 导入mysql_如何将Excel文件导入MySQL数据库

    本文实例为大家分享了Excel文件导入MySQL数据库的方法,供大家参考,具体内容如下 1.简介 本博客给大家分享一个实用的小技能,我们在使用数据库时常常需要将所需的Excel数据添加进去,如果按照传 ...

  2. 将txt文件和excel文件导入SQL2000数据库

    将txt文件和excel文件导入SQL2000数据库 在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL200 ...

  3. excel数据库_将excel文件导入mysql数据库教程(PHP实现)

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 在这篇文章中,我将给大家介绍如何使用PHP将excel文件导入mysql数据库.有时候我们需 ...

  4. 将某个目录上的Excel表,导入到数据库中.sql

    --将某个目录上的Excel表,导入到数据库中 --将所有的Excel文件放到一个目录中,假设为c:\test\,然后用下面的方法来做 create table #t(fname varchar(26 ...

  5. 将csv文件导入到数据库中

    1.csv文件简介 CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.这样你就发现了,csv其实就是纯文本文件,可以使用记事本 ...

  6. 关于怎么把Excel表格导入MySQL数据库中

    关于怎么把Excel表格导入MySQL数据库中 第一步:建造Excel表格并且编辑数据. 1.我们要建立一个Excel表格文件 2.编辑我们需要的数据 3.保存到你知道的位置 第二步:在MySQL中建 ...

  7. vb6将excel数据导入mysql_VB6.0如何实现将excel数据导入mssql数据库中

    我在VB6.0中的模块中加入了连接sql的语句,连接已经没有问题了,做登录系统和将sql的数据导入到excel中也没有问题,但就是不知如何实现将excel数据导入mssql数据库中,批量的导入,请.. ...

  8. excel数据怎么导入mysql_如何将Excel文件导入MySQL数据库

    如何将Excel文件导入MySQL数据库 本文实例为大家分享了Excel文件导入MySQL数据库的方法,供大家参考,具体内容如下 1.简介 本博客给大家分享一个实用的小技能,我们在使用数据库时常常需要 ...

  9. 如何将excel表导入oracle数据库,如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

  10. php导入qq数据txt代码,/谁有能都实现将excel文件导入到数据中,并在php网页上显示的源码啊,有的发送1091932879@qq.com,谢谢!...

    PHP网页怎么导入Excel的数据 参码如下: // 1.引用ExcelReader类文 require_once 'Excel/reader.php'; // 2.实例化读取Excel类 $data ...

最新文章

  1. IoT和AI如何让企业在疫情期间重启业务
  2. PHP 页面编码声明方法详解(header或meta)
  3. java 求向量的均值,标准数组——向量
  4. Nginx学习总结(3)——Nginx配置及应用场景之高级配置
  5. 搭建maven的私服nexus
  6. IO流之流的操作规律
  7. 史上最全Java学习视频下载地址分享
  8. oracle数据库基本讲解(菜鸟篇)
  9. 大一计算机ppt知识点,大一计算机总复习_图文.ppt
  10. Ubuntu Tty (字符终端) 显示中文,和字体大小设置
  11. 自己组装的台式电脑怎么安装系统教学
  12. 默认浏览器怎么更改为别的浏览器,这2个方法很简单
  13. android的wifi开发码源,亚美电游app下载 -官方网站
  14. 趣图:看到网友晒了新抱枕,我也想换个新的了
  15. 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
  16. 将默认的maven仓库改为阿里的maven仓库
  17. 据实而用 浅析会议摄像机的选购
  18. 海康28181摄像头接入的注意点
  19. 浏览器打开windows桌面应用
  20. 【js学习笔记-071】--- 浏览器和屏幕信息

热门文章

  1. apache 服务器状态查看
  2. VCL界面开发工具!DevExpress VCL v19.2.5全新出发
  3. 塞班系统更新服务器,塞班系统还在更新?网友:我把N8从抽屉里拿了出来
  4. Rust中国大会议程介绍:分会场 下
  5. linux无线网卡驱动编写,博通无线网卡驱动linux版
  6. 洛谷P4939 Agent2(树状数组差分)
  7. 网络爬虫js逆向解决网站登录RSA加密问题,不使用selenium如何实现登录,session维持登录状态请求爬取
  8. 计算机硬盘最小容量是多少,通常计算机的存储容量是多少?
  9. (原创)虚拟机下Ubuntu共享主机文件(Ubuntu、VMware、共享)
  10. 2022年通用航空行业研究报告