ExcelController.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.template.controller;
  2. import com.template.annotation.PassToken;
  3. import com.template.api.ExcelControllerAPI;
  4. import com.template.model.pojo.SystemUser;
  5. import com.template.services.SystemUserService;
  6. import org.apache.poi.ss.usermodel.DataFormatter;
  7. import org.apache.poi.xssf.usermodel.XSSFCell;
  8. import org.apache.poi.xssf.usermodel.XSSFSheet;
  9. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import java.io.FileInputStream;
  13. import java.io.IOException;
  14. @RestController
  15. public class ExcelController implements ExcelControllerAPI {
  16. @Autowired
  17. SystemUserService systemUserService;
  18. /**
  19. * .xlsx格式
  20. * @param
  21. */
  22. @Override
  23. @PassToken
  24. public void toExcel(String fileUrl) {
  25. //创建工作簿对象
  26. XSSFWorkbook xssfWorkbook = null;
  27. try {
  28. xssfWorkbook = new XSSFWorkbook(new FileInputStream(fileUrl));
  29. } catch (IOException e) {
  30. throw new RuntimeException(e);
  31. }
  32. //获取工作簿下sheet的个数
  33. int sheetNum = xssfWorkbook.getNumberOfSheets();
  34. //遍历工作簿中的所有数据
  35. for (int i = 0; i < sheetNum; i++) {
  36. //读取第i个工作表
  37. System.out.println("读取第"+(i+1)+"个sheet");
  38. XSSFSheet sheet = xssfWorkbook.getSheetAt(i);
  39. //获取最后一行的num,即总行数。此处从0开始
  40. int maxRow = sheet.getLastRowNum();
  41. // 从第二行开始获取数据
  42. for (int row = 1; row <= maxRow; row++) {
  43. //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
  44. int maxRol = sheet.getRow(row).getLastCellNum();
  45. System.out.println("--------第" + row + "行的数据如下--------");
  46. // for (int rol = 0; rol < maxRol; rol++){
  47. // System.out.print(sheet.getRow(row).getCell(rol) + " ");
  48. // }
  49. DataFormatter dataFormatter = new DataFormatter();
  50. // 获取手机号
  51. XSSFCell cell = sheet.getRow(row).getCell(3);
  52. // 获取的手机号格式有问题需要转换
  53. dataFormatter.addFormat("###########",null);
  54. String phone = dataFormatter.formatCellValue(cell);
  55. // 获取名字
  56. String name = sheet.getRow(row).getCell(1).toString();
  57. // 获取备注
  58. String remarks = sheet.getRow(row).getCell(4).toString();
  59. // 获取性别
  60. String genderName = sheet.getRow(row).getCell(2).toString();
  61. int gender;
  62. if ("女".equals(genderName)) {
  63. gender=1;
  64. }else {
  65. gender=2;
  66. }
  67. SystemUser systemUser = new SystemUser();
  68. systemUser.setRoleId(Long.valueOf(row));
  69. systemUser.setAccountName(name);
  70. systemUser.setAccountNumber(row+"");
  71. systemUser.setAccountPassword("123456");
  72. systemUser.setPhoneNumber(phone);
  73. systemUser.setEmail("123456@123456");
  74. systemUser.setRemarks(remarks);
  75. systemUser.setGender(gender);
  76. systemUser.setDeleted(0L);
  77. systemUser.setWechatId("123456789");
  78. systemUserService.save(systemUser);
  79. }
  80. }
  81. }
  82. }