网站前端导入Excel数据表到数据库,excel表格自动insert插入

引入jar包,maven工程或者springboot项目工程,在pom.xml文件中加入如下代码:

<!-- 下面两个是导入excel到数据库的jar包,
注意一定要是3.15这个版本,其它版本可能会出现问题 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.15</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>

前端代码:

<form th:action="@{/user/upexcel}" method="post" enctype="multipart/form-data">
                  <div class="input-group">
                      <input type="file" class="form-control" name="file" placeholder="用户名" aria-describedby="basic-addon1">
                  </div>
                  <br>
                  <button class="btn btn-info">确认导入</button>
              </form>

controller层:

/**
    * 导入excel文件内容到数据库
    * @return
    * @throws Exception
    */
   @RequestMapping("/upexcel")
   public String upexcel(MultipartFile file, HttpSession session) throws Exception {
    
    
       TempUser tempUser = (TempUser)session.getAttribute("user");
       boolean flag = excelService.getExcel(file, tempUser.getZhengId());
       //到这里可以根据flag的值进行判断成功与否,下面是我个人项目中需要的,大家根据自己的项目改改逻辑。
       if (flag) {
    
    
          session.setAttribute("message", "success");
       } else {
    
    
           session.setAttribute("message", "fail");
       }
       return "redirect:/user/allUser";
   }

service层:

//service接口层:
import org.springframework.web.multipart.MultipartFile;

public interface ExcelService {
    
    

    boolean getExcel(MultipartFile file, Integer zhengId) throws Exception;
}

//service接口实现层:
import com.dkf.wzq.beans.User;
import com.dkf.wzq.service.ExcelService;
import com.dkf.wzq.service.UserService;
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class ExcelServiceImpl implements ExcelService {
    
    

    @Autowired
    private UserService userService;  //我用来实现user的增删改查的service

    @Override
    public boolean getExcel(MultipartFile file, Integer zhengId) throws Exception {
    
    
        //1.得到上传的excel表
        BufferedInputStream bis = new BufferedInputStream(file.getInputStream());
        Workbook workbook = WorkbookFactory.create(bis);
        //2.获取users工作表,新建的表格默认是sheet1,左下角那个
        Sheet sheet = workbook.getSheet("users");
        //3.获取表总行数
        int num = sheet.getLastRowNum();
        //List<User> users = new ArrayList<>();
        //4.遍历表格并提取信息到users集合,我这里直接就执行插入了,没有用到List集合
        for(int i = 1; i <= num;i++){
    
    
            Row row = sheet.getRow(i);
            Cell cell1 = row.getCell(1);
            Cell cell2 = row.getCell(2);
            //电话号码,如158xxxxxx51 ,默认不是String类型,需要使用这个方法改一下类型
            cell2.setCellType(CellType.STRING);
            Cell cell3 = row.getCell(3);
            Cell cell4 = row.getCell(4);
            User user = new User();
            user.setUsername(cell1.getStringCellValue());
            user.setPhone(cell2.getStringCellValue());
            user.setPos(cell3.getStringCellValue());
            //这是double类型,需要强转成int
            user.setLevel((int)cell4.getNumericCellValue());
            user.setZhengid(zhengId);
            //添加的用户默认密码
            user.setPassword("dkf123");
            //执行插入操作
            userService.insertUser(user);
        }
        return true;
    }
}

最后附上我的表格截图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42458992/article/details/106493759