java 我有一个xlxs解析器,在代码中,我不能改变我的方法太多

erhoui1w  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(105)
public ResponseEntity<Object> importPcpXlsx(MultipartFile xlsx) {
      try {
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(xlsx.getInputStream());
        XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
        Row row;
        Cell cell;
        int i = 1;
      
        List<String> number = new ArrayList<>();
        while (true) {
         if (xssfSheet.getRow(i) != null) {
           row = xssfSheet.getRow(i);
           cell = row.getCell(0);
 
           if (cell.getSheet()
              .getRow(0)
              .getCell(0)
              .getRichStringCellValue()
              .getString()
              .equals("Number".trim())) {
            
             number.add(cell.getStringCellValue().trim());
 
             log.info("number: " + i + ".  № " + cell.getStringCellValue());
           }
         } else {
           i = 1;
           break;
         }
         i++;
        }
     
        List<String> kpgz = new ArrayList<>();
        while (true) {
          if (xssfSheet.getRow(i) != null) {
          
            row = xssfSheet.getRow(i);
            cell = row.getCell(1);
 
            if (cell.getSheet()
               .getRow(0)
               .getCell(1)
               .getRichStringCellValue()
               .getString()
               .equals("kpgz".trim())) {
 
             kpgz.add(cell.getStringCellValue().trim());
 
             log.info("kpgz: " + i + ". " + cell.getStringCellValue());
           }
         } else {
           i = 1;
           break;
         }
         i++;
       }

我遍历列并读取每列下的所有行。但如果我有一些列不会出现在xlxs文件中呢。也就是说,我需要一个选项,我不必严格指定列。请预测。在代码中,我按列读取,因为列有不同的类型,应该进行不同的处理。我需要这样做,以便我不指定列号代码中的列数,就像我写的cell = row.getCell(0);或者行.getCell(1)或者行.getCell(2)

sqxo8psd

sqxo8psd1#

逐个读取列并绑定它们的类型,然后检查这些列下的数据。
请参见此处的类型检查示例:解析超大Excel 2007文件的最佳语言
如果你能明确地识别列,这不是问题。如果不能,你应该考虑改变API。

相关问题