当前位置:   article > 正文

java读取Excel成List对象数组_java怎么读取文件内容,并将数据转为list

java怎么读取文件内容,并将数据转为list
1.导包
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

2.代码

  1. import lombok.extern.slf4j.Slf4j;
  2. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  3. import org.apache.poi.ss.usermodel.*;
  4. import org.springframework.web.multipart.MultipartFile;
  5. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.function.Function;
  12. @Slf4j
  13. public class ExcelAnalysisUtil {
  14. public static <T> List<T> analysis(MultipartFile file, Function<List<String>,T> converter) {
  15. List<T> row = new ArrayList<>();
  16. //获取文件名称
  17. String fileName = file.getOriginalFilename();
  18. try {
  19. //获取输入流
  20. InputStream in = file.getInputStream();
  21. //判断excel版本
  22. Workbook workbook = null;
  23. if (judegExcelEdition(fileName)) {
  24. workbook = new XSSFWorkbook(in);
  25. } else {
  26. workbook = new HSSFWorkbook(in);
  27. }
  28. //获取第一张工作表
  29. Sheet sheet = workbook.getSheetAt(0);
  30. //从第二行开始获取 getLastRowNum
  31. for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
  32. //循环获取工作表的每一行
  33. Row sheetRow = sheet.getRow(i);
  34. //循环获取每一列
  35. ArrayList<String> cell = new ArrayList<>();
  36. for (int j = 0; j < sheetRow.getPhysicalNumberOfCells(); j++) {
  37. //将每一个单元格的值装入列集合
  38. sheetRow.getCell(j).setCellType(CellType.STRING);
  39. cell.add(sheetRow.getCell(j).getStringCellValue());
  40. }
  41. //将装有每一列的集合装入大集合
  42. row.add(converter.apply(cell));
  43. //关闭资源
  44. workbook.close();
  45. }
  46. } catch (FileNotFoundException e) {
  47. e.printStackTrace();
  48. log.error("===================未找到文件======================");
  49. } catch (IOException e) {
  50. e.printStackTrace();
  51. log.error("===================上传失败======================");
  52. }
  53. return row;
  54. }
  55. /**
  56. * 获取并解析excel文件,返回一个二维集合
  57. *
  58. * @param file 上传的文件
  59. * @return 二维集合(第一重集合为行,第二重集合为列,每一行包含该行的列集合,列集合包含该行的全部单元格的值)
  60. */
  61. public static List<List<String>> analysis(MultipartFile file) {
  62. return analysis(file,e->e);
  63. }
  64. /**
  65. * 判断上传的excel文件版本(xls为2003,xlsx为2017)
  66. *
  67. * @param fileName 文件路径
  68. * @return excel2007及以上版本返回true,excel2007以下版本返回false
  69. */
  70. private static boolean judegExcelEdition(String fileName) {
  71. if (fileName.matches("^.+\\.(?i)(xls)$")) {
  72. return false;
  73. } else {
  74. return true;
  75. }
  76. }
  77. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/476288
推荐阅读
相关标签
  

闽ICP备14008679号