java技术--POI导入Excel(将Excel表数据导入数据库)

01.上篇博文主要介绍了使用JXL,POI技术将数据库表数据导出为Excel;
2.本篇主要介绍导入功能的实现;
3.还是以POI技术为主,JXL这里只做代码展示,若有兴趣可以私下研究
4.使用JXL从Excel表格中读取数据代码示例:

  public class JxlRead{
  public static void main(String[] args){
  try{
  //获取Excel文件存放地址
  File file = new File("E:/sheet.xls");
  //创建workbook
  Workbook  wb = wb.getWorkbook(file);
  //获取第一个表格
  Sheet sheet = wb.getSheet(0);
  //获取数据
  for(int i=0;i<sheet.get.Rows();i++){
    for(int j=0;j<sheet.get.Columns();j++){
    Cell cell = sheet.getCell(j,i);
    System.out.print(cell.getContents()+" ");
    }
    System.out.println();
  }
  }catch(Exception e){
  e.printStackTrace();
  }
  }
  }

5.使用POI从Excel表格中读取数据代码示例:
可以参考:https://www.cnblogs.com/SHMILYHP/p/8327861.html
5.1.这里使用框架作为例子(spring+springmvc+hibernate),省略数据操作层!!
5.2.:POI实现从Excel表格中读取数据导入到数据库代码示例(这里省略数据库操作类)

    public class ImportExcelTODB{
    //相当于连接数据库
    @Resource
	private UserDAO userDao;
    public String ImportExcel(){
    List<User> userList = new ArrayList<>();
    try{
    userList = getUserList(filePath)
    if(userList !=null&&userList .szie()>0){
    for(User user : userList ){
    //将解析出来的Excel表数据插入数据库
    userDao.saveUser(user);
    }
    }catch(IOException e){
    e.printStackTrace();
    }
    return filePath;
    }
 //获取Excel表中的值类型
 private String getValue(Cell cell){
if(cell.getCellType()==cell.CELL_TYPE_BOOLEAN){
  // 返回布尔类型的值
  return String.valueOf(cell.getBooleanCellValue());
 }else if(cell.getCellType() ==cell.CELL_TYPE_NUMERIC){
 //返回数值类型的值
 return String.valueOf(cell.getNumericCellValue());
 }else{
 // 返回字符串类型的值
 return String.valueOf(cell.getStringCellValue());
 }
 }
//读取Excel表数据
private List<User> getUserList(String filePath){
//获取Excel文件路径
InputStream is = new FileInputStream(filePath);
Workbook wb= null;
//通过POI的工作薄类解析xls文件 判断excel的两种格式xls,xlsx
if (filePath.toLowerCase().endsWith("xlsx")) {
			workbook = new XSSFWorkbook(is);
		} else if (filePath.toLowerCase().endsWith("xls")) {
			workbook = new HSSFWorkbook(is);
		}
		//创建对象准备接受数据
		User user = null;
		List<User> userList = new ArrayList<>();
		//得到sheet总数
		int numSheets = wb.getNumberOfSheets();
		//循环工作表sheet
		for(int numSheet=0;numSheet<numSheets ;numSheets ++){
		//得到第i个sheet
      Sheet sheet = workbook.getSheetAt(numSheet);
     if(sheet==null){
         continue;
       }
       // 获取到Excel文件中的所有行数
		int rowCount = sheet.getPhysicalNumberOfRows();
      //遍历行
     for(int numRow = 1; numRow <= rowCount ;  numRow++){
     //获取当前行数据
     Row row = sheet.getRow(numRow );
     if(row==null){
      continue;
    }else{
     user = new User();
    // 获取到Excel文件中的所有的列
	int cellCount = row.getPhysicalNumberOfCells();
	// 遍历列
				for (int j = 0; j < cellCount; j++) {
					// 获取单元格对象
					Cell cell = row.getCell(j);
					// 给单元格对象赋值
					user.setName(getValue(cell));
					user.setEmail(getValue(cell));
					userList.add(user);
				}
			}
		}
	}
	return userList;
}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值