0

216 個の xsls ファイルを含むフォルダーがあります。私のロジックは、フォルダーをループしてすべてのファイルを読み取り、各ファイルの最初の行をコピーして、その行を新しい .xsls ファイルに書き込むことです。

行を繰り返しスローしてすべてのセルを読み取ることなく、最初の行をコピーしたいですか? たとえば、.txt ファイルまたは .csv ファイルの最初の行をコピーするとします。

また、これは非常に遅いプロセスです。このプロセスをスピードアップするためのヒントはありますか?

 public static void listFilesForFolder(final File folder,final File exported, int skipLine) {
    try {
        for (final File fileEntry : folder.listFiles()) {
            
            String ext = fileEntry.getName().substring(fileEntry.getName().lastIndexOf('.') + 1);
            
            System.out.println("-->> " + fileEntry.getName() + "-->>");
            
            FileInputStream file = new FileInputStream(new File(fileEntry.getPath()));
            
            if (fileEntry.isDirectory()) {
                continue;
            } else if(ext.equals("xlsx")) {
                
                XSSFWorkbook myWorkBook = new XSSFWorkbook(file);
                XSSFSheet mySheet = myWorkBook.getSheetAt(0);
                
                Iterator<Row> rowIterator = mySheet.iterator();
                
                    Row row = rowIterator.next();
                    
                    row = rowIterator.next();
                    
                    Iterator<Cell> cellIterator = row.cellIterator();
                    while (cellIterator.hasNext()) {
                        Cell cell = cellIterator.next();
                        switch (cell.getCellType()){
                            case STRING:
                                System.out.print(cell.getStringCellValue() + "\t");
                                break;
                            case NUMERIC:
                                System.out.print(cell.getNumericCellValue() + "\t");
                                break;
                            default:
                        }
                    }
                    System.out.println("");
                file.close();
            }
        }
    }catch (Exception e){
        System.out.println(e.getMessage());
    }
    }
4

1 に答える 1