fwq
2023-02-03 8c12bbbf711732e52e322fe7d8b95f9f887513d5
poi4.0+
1个文件已添加
129 ■■■■■ 已修改文件
src/main/java/com/hx/util/ExcelFileUtil.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/hx/util/ExcelFileUtil.java
New file
@@ -0,0 +1,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();
            }
        }
    }
}