ExcelUtil.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.fdkankan.manage.util;
  2. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  3. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4. import org.apache.poi.ss.usermodel.*;
  5. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.text.SimpleDateFormat;
  10. import java.util.ArrayList;
  11. import java.util.Date;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. public class ExcelUtil {
  15. public static List<HashMap<Integer,String>> getExcelRowList(MultipartFile multipartFile) throws IOException {
  16. //行List,也是最终要返回的List
  17. List<HashMap<Integer,String>> rowList=new ArrayList<>();
  18. Workbook workbook=getExcelWorkBook(multipartFile);
  19. Sheet sheet = workbook.getSheetAt(0);
  20. if (sheet == null) {
  21. throw new IOException("创建Sheet失败!");
  22. }
  23. //开始遍历行
  24. for (int i=0;i<= sheet.getLastRowNum();i++){
  25. Row row = sheet.getRow(i);
  26. //列List
  27. HashMap<Integer,String> map = new HashMap<>();
  28. //转换为List数组
  29. for (int cellNum=0;cellNum<= row.getLastCellNum();cellNum++){
  30. Cell cell = row.getCell(cellNum);
  31. if (cell != null && cell.getCellTypeEnum() != CellType.STRING && HSSFDateUtil.isCellDateFormatted(cell))
  32. {
  33. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  34. Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
  35. String value = sdf.format(date);
  36. map.put(cellNum,value);
  37. continue;
  38. }
  39. if(cell != null){
  40. DataFormatter dataFormatter = new DataFormatter();
  41. String cellValue = dataFormatter.formatCellValue(cell);
  42. map.put(cellNum,cellValue);
  43. }
  44. }
  45. rowList.add(map);
  46. }
  47. return rowList;
  48. }
  49. private static String fommartNum(String value){
  50. try {
  51. if(isNumeric2(value) && value.contains(".")){
  52. return Double.valueOf(value).intValue() +"";
  53. }
  54. }catch (Exception e){
  55. return value;
  56. }
  57. return value;
  58. }
  59. public static boolean isNumeric2(String str) {
  60. return str != null && str.matches("-?\\d+(\\.\\d+)?");
  61. }
  62. //获取WorkBook对象
  63. private static Workbook getExcelWorkBook(MultipartFile multipartFile) throws IOException {
  64. InputStream inputStream=multipartFile.getInputStream();
  65. String originalFileName=multipartFile.getOriginalFilename();
  66. assert originalFileName != null;
  67. String fileType=originalFileName.substring(originalFileName.lastIndexOf(".")+1);
  68. if (fileType.equalsIgnoreCase("xls")) {
  69. //xls格式
  70. return new HSSFWorkbook(inputStream);
  71. } else {
  72. //xlsx格式
  73. return new XSSFWorkbook(inputStream);
  74. }
  75. }
  76. }