fhx
2023-04-25 2aad5c6ca552423d1b8e6e8c869a698a15822759
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.hx.util;
 
 
import com.hx.exception.TipsException;
import jxl.CellType;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
/**
 * Excel工具类(兼容poi4.0+)
 */
public class ExcelFileUtil {
 
    /**
     * 读取 Excel文件内容
     *
     * @param file
     * @param header 是否包括表头
     * @return
     * @throws Exception
     */
    public static List<List<String>> readExcelByeFileData(MultipartFile file, boolean header) throws Exception {
        // 结果集
        List<List<String>> list = new ArrayList<>();
        if (file == null){
            return list;
        }
        String fileName = file.getOriginalFilename();
        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
            throw new TipsException("上传文件格式不正确");
        }
 
        Workbook hssfworkbook = WorkbookFactory.create(file.getInputStream());
 
        int num = hssfworkbook.getNumberOfSheets();
        if (num == 0){
            return list;
        }
        List<String> rowList;
        for (int k = 0; k< num ; k++) {
            Sheet sheet = hssfworkbook.getSheetAt(k);
 
            for (int i = 0; i <= sheet.getLastRowNum(); i++) {
                rowList = new ArrayList<>();
                // 获取第i行的数据
                Row row = sheet.getRow(i);
                // getLastCellNum() 获取这一行中单元格的数量
                for (int j = 0; j < row.getLastCellNum(); j++) {
                    // 获取第i行第j列的单元格数据
                    rowList.add(row.getCell(j).toString());
                }
                list.add(rowList);
            }
        }
        return list;
    }
 
 
    /**
     * 读取 Excel文件内容
     *
     * @param file
     * @param header 是否包括表头
     * @return
     * @throws Exception
     */
    public static List<List<String>> readExcelByeFileData(File file, boolean header) throws Exception {
        // 结果集
        List<List<String>> list = new ArrayList<>();
        if (file == null){
            return list;
        }
        String fileName = file.getName();
        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
            throw new TipsException("上传文件格式不正确");
        }
 
        Workbook hssfworkbook = WorkbookFactory.create(new FileInputStream(file));
 
        int num = hssfworkbook.getNumberOfSheets();
        if (num == 0){
            return list;
        }
        List<String> rowList;
        for (int k = 0; k< num ; k++) {
            Sheet sheet = hssfworkbook.getSheetAt(k);
 
            for (int i = 0; i <= sheet.getLastRowNum(); i++) {
                rowList = new ArrayList<>();
                // 获取第i行的数据
                Row row = sheet.getRow(i);
                // getLastCellNum() 获取这一行中单元格的数量
                for (int j = 0; j < row.getLastCellNum(); j++) {
                    // 获取第i行第j列的单元格数据
                    rowList.add(row.getCell(j).toString());
                }
                list.add(rowList);
            }
        }
        return list;
    }
 
 
 
    private static String objToString(Object obj) {
        if (obj == null) {
            return "";
        } else {
            if (obj instanceof String) {
                return (String) obj;
            } else if (obj instanceof Date) {
                return null;
            } else {
                return obj.toString();
            }
        }
    }
 
 
}