ExcelUtil.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.fdkankan.manage.util;
  2. import org.apache.commons.lang3.ObjectUtils;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  5. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  6. import org.apache.poi.ss.usermodel.*;
  7. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  8. import org.springframework.web.multipart.MultipartFile;
  9. import java.io.*;
  10. import java.text.SimpleDateFormat;
  11. import java.util.ArrayList;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. public class ExcelUtil {
  16. public static List<HashMap<Integer,String>> getExcelRowList(MultipartFile multipartFile) throws IOException {
  17. //行List,也是最终要返回的List
  18. List<HashMap<Integer,String>> rowList=new ArrayList<>();
  19. Workbook workbook=getExcelWorkBook(multipartFile);
  20. Sheet sheet = workbook.getSheetAt(0);
  21. if (sheet == null) {
  22. throw new IOException("创建Sheet失败!");
  23. }
  24. //开始遍历行
  25. for (int i=0;i<= sheet.getLastRowNum();i++){
  26. Row row = sheet.getRow(i);
  27. //列List
  28. HashMap<Integer,String> map = new HashMap<>();
  29. //转换为List数组
  30. for (int cellNum=0;cellNum<= row.getLastCellNum();cellNum++){
  31. Cell cell = row.getCell(cellNum);
  32. if(cell != null){
  33. DataFormatter dataFormatter = new DataFormatter();
  34. String cellValue = dataFormatter.formatCellValue(cell);
  35. map.put(cellNum,cellValue);
  36. }
  37. }
  38. rowList.add(map);
  39. }
  40. return rowList;
  41. }
  42. private static String fommartNum(String value){
  43. try {
  44. if(isNumeric2(value) && value.contains(".")){
  45. return Double.valueOf(value).intValue() +"";
  46. }
  47. }catch (Exception e){
  48. return value;
  49. }
  50. return value;
  51. }
  52. public static boolean isNumeric2(String str) {
  53. return str != null && str.matches("-?\\d+(\\.\\d+)?");
  54. }
  55. public static List<HashMap<Integer,String>> getExcelRowList(File multipartFile) throws IOException {
  56. //行List,也是最终要返回的List
  57. List<HashMap<Integer,String>> rowList=new ArrayList<>();
  58. Workbook workbook=getExcelWorkBook(multipartFile);
  59. Sheet sheet = workbook.getSheetAt(0);
  60. if (sheet == null) {
  61. throw new IOException("创建Sheet失败!");
  62. }
  63. //开始遍历行
  64. for (int i=0;i<= sheet.getLastRowNum();i++){
  65. Row row = sheet.getRow(i);
  66. //列List
  67. HashMap<Integer,String> map = new HashMap<>();
  68. //转换为List数组
  69. for (int cellNum=0;cellNum<= row.getLastCellNum();cellNum++){
  70. Cell cell = row.getCell(cellNum);
  71. if(ObjectUtils.isNotEmpty(cell)){
  72. DataFormatter dataFormatter = new DataFormatter();
  73. String cellValue = dataFormatter.formatCellValue(cell);
  74. System.out.println(cellValue);
  75. map.put(cellNum,cellValue);
  76. }
  77. }
  78. rowList.add(map);
  79. }
  80. return rowList;
  81. }
  82. public static void main(String[] args) throws IOException {
  83. getExcelRowList(new File("D:\\abc\\111111\\rtk账号导入模板 (1).xlsx"));
  84. }
  85. //获取WorkBook对象
  86. private static Workbook getExcelWorkBook(MultipartFile multipartFile) throws IOException {
  87. InputStream inputStream=multipartFile.getInputStream();
  88. String originalFileName=multipartFile.getOriginalFilename();
  89. assert originalFileName != null;
  90. String fileType=originalFileName.substring(originalFileName.lastIndexOf(".")+1);
  91. if (fileType.equalsIgnoreCase("xls")) {
  92. //xls格式
  93. return new HSSFWorkbook(inputStream);
  94. } else {
  95. //xlsx格式
  96. return new XSSFWorkbook(inputStream);
  97. }
  98. }
  99. private static Workbook getExcelWorkBook(File multipartFile) throws IOException {
  100. InputStream inputStream = new FileInputStream(multipartFile);
  101. String originalFileName=multipartFile.getName();
  102. assert originalFileName != null;
  103. String fileType=originalFileName.substring(originalFileName.lastIndexOf(".")+1);
  104. if (fileType.equalsIgnoreCase("xls")) {
  105. //xls格式
  106. return new HSSFWorkbook(inputStream);
  107. } else {
  108. //xlsx格式
  109. return new XSSFWorkbook(inputStream);
  110. }
  111. }
  112. }