如何用Java将excel数据导入数据库

如何用Java将excel数据导入数据库,第1张

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)

}

}

}

}

excel有行和列,可以对应数据库表的行和字段。先获取你excel中的数据,如果你的数据是和java中实体对应的话,循环获取每一行数据存放进实体对象中,然后进行数据库保存就好了。

读取excel数据可以使用poi。

//从excle文档中,将值导入至list数组

//xlsPath 路径 从前台获取

//Excle导入

public List<TblUser> loadScoreInfo(String xlsPath) throws IOException{

    List temp = new ArrayList()

FileInputStream fileIn = new FileInputStream(xlsPath)

//根据指定的文件输入流导入Excel从而产生Workbook对象

Workbook wb0 = new HSSFWorkbook(fileIn)

//获取Excel文档中的第一个表单

Sheet sht0 = wb0.getSheetAt(0)

//对Sheet中的每一行进行迭代

        for (Row r : sht0) {

        //如果当前行的行号(从0开始)未达到2(第三行)则从新循环

if(r.getRowNum()<1){

continue

}

//创建实体类

TblUser info=new TblUser()

//取出当前行第1个单元格数据,并封装在info实体stuName属性上

if(r.getCell(0)!=null){

 r.getCell(0).setCellType(Cell.CELL_TYPE_STRING)

     info.setId(Integer.parseInt(r.getCell(0).getStringCellValue()))

}

//同上

if(r.getCell(1)!=null){

     r.getCell(1).setCellType(Cell.CELL_TYPE_STRING)

     info.setUsername(r.getCell(1).getStringCellValue())

}

if(r.getCell(2)!=null){

     r.getCell(2).setCellType(Cell.CELL_TYPE_STRING)

     info.setPassword(r.getCell(2).getStringCellValue())

}

if(r.getCell(3)!=null){

     r.getCell(3).setCellType(Cell.CELL_TYPE_STRING)

     info.setState(r.getCell(3).getStringCellValue())

}

if(r.getCell(4)!=null){

     r.getCell(4).setCellType(Cell.CELL_TYPE_STRING)

     info.setRename(r.getCell(4).getStringCellValue())

}

if(r.getCell(5)!=null){

     r.getCell(5).setCellType(Cell.CELL_TYPE_STRING)

     info.setEmail(r.getCell(5).getStringCellValue())

}

 temp.add(info)

        }

        fileIn.close()    

        return temp    

    }

 public void ztree()

 {

 

 }

//导出当前页的数据

public void exportPage(){

List<TblUser> list=new ArrayList<TblUser>()

String[] slist=daor.split(",")

//将页面获取到的id集合遍历,循环添加到list中,进行本页数据到导出

for (int i = 0 i < slist.length i++) {

list.add(tus.findById(java.lang.Integer.parseInt(slist[i])))

}

tus.export(list)

}

/**

 * 导入Excle到数据库

 * @return null 不然有可能报错!

 * @throws IOException

 */

public void importExcle() throws IOException{

//调用导入文件方法并存入数组中

int s=0//得到成功插入的条数

int i=0//得到共有多少条

/**

 * 将不符合格式的数据错误信息存入数组中!

 * 格式要求:

 * 用户名,密码不能为空!

 * 用户名不能和已存在的用户名重复,长度在5-18位之间

 * 密码长度在6-18位之间

 */

String errors=""//保存导入失败信息

try {

System.out.println("进入方法!")

lists=this.loadScoreInfo(path)

System.out.println(path)

for (TblUser u : lists) {

i++

if(u.getUsername()==""){

    errors+="第"+i+"条数据的用户名为空,导入失败!"//^^:分割符

    continue

}

if(u.getPassword()==""){

errors+="第"+i+"条数据的密码为空,导入失败!"//^^:分割符

continue

}

if(tus.findByName(u.getUsername())){

errors+="第"+i+"条数据的用户名 已存在,导入失败!"//^^:分割符

continue

}

if(u.getUsername().length()<5 || u.getUsername().length()>20){

errors+="第"+i+"条数据的用户名格式错误,导入失败!"//^^:分割符

continue

}

if(u.getPassword().length()<6 || u.getPassword().length()>20){

errors+="第"+i+"条数据的密码格式错误,导入失败!"//^^:分割符

continue

}

s++

tus.save(u)//将数组中的数据添加到数据库中!

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}finally{

System.out.println("错误:"+errors)

}

        

}  


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6688280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存