ExcelUtil.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. String value = fommartNum(cell.toString().trim());
  41. map.put(cellNum,value);
  42. }
  43. }
  44. rowList.add(map);
  45. }
  46. return rowList;
  47. }
  48. private static String fommartNum(String value){
  49. try {
  50. if(isNumeric2(value) && value.contains(".")){
  51. return Double.valueOf(value).intValue() +"";
  52. }
  53. }catch (Exception e){
  54. return value;
  55. }
  56. return value;
  57. }
  58. public static boolean isNumeric2(String str) {
  59. return str != null && str.matches("-?\\d+(\\.\\d+)?");
  60. }
  61. //获取WorkBook对象
  62. private static Workbook getExcelWorkBook(MultipartFile multipartFile) throws IOException {
  63. InputStream inputStream=multipartFile.getInputStream();
  64. String originalFileName=multipartFile.getOriginalFilename();
  65. assert originalFileName != null;
  66. String fileType=originalFileName.substring(originalFileName.lastIndexOf(".")+1);
  67. if (fileType.equalsIgnoreCase("xls")) {
  68. //xls格式
  69. return new HSSFWorkbook(inputStream);
  70. } else {
  71. //xlsx格式
  72. return new XSSFWorkbook(inputStream);
  73. }
  74. }
  75. }