POI讀取excel中數據


直接貼代碼了,包括對於合並單元格的處理。

 

    public String[][] readSheet(Integer sheetId) {

        XSSFSheet sheet = workbook.getSheetAt(sheetId);

        int rowCount = sheet.getPhysicalNumberOfRows();
        String[][] data = new String[rowCount][];
        // 1. 遍歷一遍數據
        for (int i = 0; i < rowCount; i++) {
            XSSFRow row = sheet.getRow(i);
            int colCount = row.getPhysicalNumberOfCells();
            data[i] = new String[colCount];

            for (int j = 0; j < colCount; j++) {
                XSSFCell cell = row.getCell(j);
                String value;
                if (cell != null && StringUtils.isNotBlank(value = cell.getStringCellValue())) {
                    data[i][j] = value;
                }
            }
        }


        // 2.解析所有的聯合空格
        List<CellRangeAddress> list = sheet.getMergedRegions();
        for (CellRangeAddress cellAddresses : list) {
            int startRow = cellAddresses.getFirstRow();
            int endRow = cellAddresses.getLastRow();
            int startCol = cellAddresses.getFirstColumn();
            int endCol = cellAddresses.getLastColumn();

            // 2.1 起始位置數據
            String value = data[startRow][startCol];

            // 2.2 遍歷所有位置數據
            if (StringUtils.isNotBlank(value)) {
                for (int i = startRow; i <= endRow; i++) {
                    for (int j = startCol; j <= endCol; j++) {
                        data[i][j] = value;
                    }
                }
            }
        }
        return data;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM