如何使用POI读取Excel文件中的空单元格?

v6ylcynt  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(144)

如何使用POI读取excel文件中的空单元格?
当我上传Excel文件时,空单元格被上一个单元格填充。
就像这样:

  • 这是excel文件的示例

  • 这是一个数据库,空单元格将填充上一个单元格

  • POI版本

我的意思是说,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是

  • 代码
@RequestMapping("/mng/mngSaupExcelUpload14.do")
        public ModelAndView mngBizApplyExcelUpload14(MultipartHttpServletRequest request, HttpServletResponse response,
                HttpSession session, INDEYearVO attach) throws IOException, ParseException {
            
            Iterator<String> iterator = request.getFileNames();
            int actResult = 0;
            ModelAndView mav = new ModelAndView();
            response.setContentType("text/html");
            response.setCharacterEncoding("UTF-8");
            PrintWriter out = response.getWriter();
            
            MultipartFile mFile = null;
            while (iterator.hasNext()) {
                
                String uploadFileName = iterator.next();
                mFile = request.getFile(uploadFileName);
                // String originFileName = mFile.getOriginalFilename();
                // String saveFileName = originFileName;
            }
            
            XSSFWorkbook workbook = new XSSFWorkbook(mFile.getInputStream());
            
            for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
                
                XSSFSheet sheet = workbook.getSheetAt(sheetNum);
                
                int rows = sheet.getPhysicalNumberOfRows();
                
                int rowindex = 0;
                int columnindex = 0;
                
                if (sheetNum == 0) {
                    
                    for (rowindex = 1; rowindex < rows; rowindex++) {
                        sheet = workbook.getSheetAt(0);
                        XSSFRow row = sheet.getRow(rowindex);
                        if (row != null) {
                            int cells = row.getPhysicalNumberOfCells();
                            for (columnindex = 0; columnindex <= cells; columnindex++) {
                                XSSFCell cell = row.getCell(columnindex);
                                String value = "";
                                
                                if (cell == null) {
                                    
                                    continue;
                                    
                                } else {
                                    
                                    switch (cell.getCellType()) {
                                    
                                    case FORMULA:
                                        value = cell.getCellFormula();
                                        break;
                                        
                                    case NUMERIC:
                                        
                                        //value = (int)cell.getNumericCellValue() + "";
                                        
                                        double cellValue = cell.getNumericCellValue();
                                        
                                        if (cellValue == Math.rint(cellValue)) {
                                            value = String.valueOf((int) cellValue);
                                        } else {
                                            value = String.valueOf(cellValue);
                                        }
                                        
                                        break;
                                        
                                    case STRING:
                                        value = cell.getStringCellValue() + "";
                                        break;
                                        
                                    case BLANK:
                                        value =  null;
                                        // value =  cell.getBooleanCellValue() + "";
                                    
                                        break;
                                        
                                    case ERROR:
                                        value = cell.getErrorCellValue() + "";
                                        break;
                                        
                                    default:
                                    }
                                    if (columnindex == 0) {
                                        attach.setSn(Integer.parseInt(value));
                                    }else if (columnindex == 1) {
                                        attach.setYear(Integer.parseInt(value));
                                    }else if (columnindex == 2) {
                                        attach.setSigngu(value);
                                    } else if (columnindex == 3) {
                                        attach.setJan(Integer.parseInt(value));
                                    } else if (columnindex == 4) {
                                        attach.setFeb(Integer.parseInt(value));                                 
                                    } else if (columnindex == 5) {
                                        attach.setMar(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 6) {
                                        attach.setApr(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 7) {
                                        attach.setMay(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 8) {
                                        attach.setJne(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 9) {
                                        attach.setJly(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 10) {
                                        attach.setAug(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 11) {
                                        attach.setSep(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 12) {
                                        attach.setOct(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 13) {
                                        attach.setNov(Integer.parseInt(value));                                                                     
                                    } else if (columnindex == 14) {
                                        if ("false".equals(value) || "".equals(value) || "0".equals(value) || value == null ) {
                                            attach.setDec(Integer.parseInt(""));
                                            
                                            
                                        } else {
                                            attach.setDec(Integer.parseInt(value));                                                                     

                                        }
                                    
                                    } 
                                }
                            }
                            
                            actResult = attachFileService.fileInsertActForExcel14(attach);
                        }
                    }
                }
            }
            if (actResult > 0) {
                out.println("<script>");
                out.println("alert('등록에 성공 하였습니다.');");
                out.println("location.replace('" + request.getContextPath() + "attachFile.do');");
                out.println("</script>");
                out.flush();
                out.close();
                
                return null;
                
            } else {
                out.println("<script>");
                out.println("alert('등록 중 오류가 발생했습니다.');");
                out.println("location.replace('" + request.getContextPath() + "attachFile.do');");
                out.println("</script>");
                out.flush();
                out.close();
                
                return null;
            }
        }

我真的不知道为什么空细胞是填补..

juzqafwq

juzqafwq1#

我不认为这是一个问题与poi。也检查数据库插入代码。
我正在开发一个图书馆,可能会有帮助,所以如果你能看一下,我会很感激。
https://github.com/scndry/jackson-dataformat-spreadsheet

相关问题