zoukankan      html  css  js  c++  java
  • 【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);
        }
    }
    如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取
  • 相关阅读:
    217. Contains Duplicate (leetcode)
    242. Valid Anagram(leetcode)
    JVM的逃逸分析
    有 a
    Maven 项目管理从未如此通畅
    Spring学习手札(四)谈谈Spring Bean的生命周期及作用域
    Spring学习手札(三)理解IoC 拯救不开心
    Spring学习手札(二)面向切面编程AOP
    Spring学习手札(一)
    Java提供了哪些IO方式?IO, BIO, NIO, AIO是什么?
  • 原文地址:https://www.cnblogs.com/danhuai/p/15773444.html
Copyright © 2011-2022 走看看