【Java】下载excel文件并解析excel数据

1、maven依赖

      <!--    下载文件    -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.1.2</version>
        </dependency>
        <!--    操作excel    -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

2、代码

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;

public class aa {
    /**
     * 下载文件
     *
     * @param url
     * @param outFilePath
     */
    public void downloadFile(String url, String outFilePath) {
        HttpUtil.downloadFile(url, outFilePath);
    }

    /**
     * 解析Excel
     *
     * @param excelPath          excel路径
     * @param isReadDefaultSheet true-默认读取第0个sheet表
     * @param sheetName          读取指定名称得sheet表(当isReadDefaultSheet=false时生效)
     * @return [
     * {"0":"第0列第0行","1":"第0列第1行"},
     * {"0":"第1列第0行","1":"第1列第1行"}
     * ]
     */
    public ArrayList<JSONObject> analysisExcel(String excelPath, boolean isReadDefaultSheet, String sheetName) {
        XSSFWorkbook wb = null;
        try {
            wb = new XSSFWorkbook(new FileInputStream(excelPath));
        } catch (IOException e) {
            e.printStackTrace();
        }
        XSSFSheet sheet = null;
        if (isReadDefaultSheet) {
            sheet = wb.getSheetAt(0);
        } else {
            sheet = wb.getSheet(sheetName);
        }

        int lastRowNum = sheet.getLastRowNum() + 1; // 总行数
        int lastCellNum = sheet.getRow(0).getPhysicalNumberOfCells(); // 总列数

        ArrayList<JSONObject> excelDataList = new ArrayList<>();
        // 循环行
        for (int rowIndex = 0; rowIndex < lastRowNum; rowIndex++) {
            XSSFRow row = sheet.getRow(rowIndex);
            JSONObject rowDataJson = new JSONObject();
            // 循环列
            for (int colIndex = 0; colIndex < lastCellNum; colIndex++) {
                CellType cellTypeEnum = row.getCell(colIndex).getCellTypeEnum();
                switch (cellTypeEnum.name()) {
                    case "_NONE":
                        break;
                    case "NUMERIC":
                        rowDataJson.put(String.valueOf(colIndex), String.valueOf(row.getCell(colIndex).getNumericCellValue()));
                        break;
                    case "STRING":
                        rowDataJson.put(String.valueOf(colIndex), String.valueOf(row.getCell(colIndex).getStringCellValue()));
                        break;
                    case "FORMULA":
                        rowDataJson.put(String.valueOf(colIndex), String.valueOf(row.getCell(colIndex).getCellFormula()));
                        break;
                    case "BLANK":
                        rowDataJson.put(String.valueOf(colIndex), "");
                        break;
                    case "BOOLEAN":
                        rowDataJson.put(String.valueOf(colIndex), String.valueOf(row.getCell(colIndex).getBooleanCellValue()));
                        break;
                    case "ERROR":
                        break;
                }
            }
            excelDataList.add(rowDataJson);
        }
        for (Object a : excelDataList) {
            System.out.println(a);
        }
        return excelDataList;
    }

    public static void main(String[] args) throws IOException {
        // 下载文件
        String url = "http://www.chengdu.gov.cn/chengdu/c105449f//2020-04/15/63c83141a30244e5b340265ecad395e7/files/c44606a20b694c22aa6ddf63530e863d.pdf";
        new aa().downloadFile(url,"e:/abc/test02.pdf");

        // 解析excel
        String exP = "E:\\aaa.xlsx";
        new aa().analysisExcel(exP, true, "");
    }
}

3、效果

3.1、下载文件

 3.2、解析excel

 4、备注

get

HttpRquest.get(url).header("XXX", "XXX").execute().writeBody("d:/downloadFile");

post

import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;

/**
 * @Author:
 * @Date: 2022/1/6 20:52
 * @Description:
 * @Version: v1.0
 */
public class aaa {
    public static void main(String[] args) {
        String url = "https://xxx.xxx.xxx.xxx/admin/statistics?";

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("startTime",1641398400000l);
        jsonObject.put("endTime",1641431562957l);

        long l = HttpRequest.post(url)
                .header("Authorization", "e4f9c9db-ae6a-450b-a808-2256800fcba7")
                .body(jsonObject)
                .execute().writeBody("E:\\abc\\666.xlsx");
        System.out.println(l);
    }
}
如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取
原文地址:https://www.cnblogs.com/danhuai/p/15773444.html