Использование Java для чтения и очистки файла Excel - PullRequest
2 голосов
/ 11 октября 2019

Я пытаюсь создать приложение Java, которое может читать и очищать файл Excel в формате .xlsx (сравнивая его с основным списком, также в формате Excel) перед записью его в новый файл Excel. Мне также нужно иметь возможность публиковать очищенный файл в веб-приложении, но это будет позже.

Я использую Apache POI и смог успешно прочитать файл Excel (в разделе вывода вЗатмение это не начинается с первого ряда, хотя).

Вот где я застрял. Я смог прочитать строки с помощью итератора, но как мне извлечь все эти значения в переменные? Могу ли я создать таблицу данных?

public class ReadAndCleanExcel {

    public void readExcel(String filePath) {

        Object[][] data = null;
        final DataFormatter df = new DataFormatter();

        try {
            FileInputStream file = new FileInputStream(new File(filePath));

            //Create Workbook instance holding reference to .xlsx file
            XSSFWorkbook workbook = new XSSFWorkbook(file);

            //Get first/desired sheet from the workbook
            XSSFSheet sheet = workbook.getSheetAt(0);

            //Iterate through each rows one by one
            Iterator<Row> rowIterator = sheet.iterator();

            int rownum = 0;
            int colnum = 0;
            Row r=rowIterator.next();

            int rowcount=sheet.getLastRowNum();
            int colcount=r.getPhysicalNumberOfCells();

            data = new Object[rowcount][colcount];

            while (rowIterator.hasNext()) {

                Row row = rowIterator.next();

                //For each row, iterate through all the columns
                Iterator<Cell> cellIterator = row.cellIterator();
                colnum = 0;

                while (cellIterator.hasNext()) {

                    Cell cell = cellIterator.next();
                    //Check the cell type and format accordingly
                    data[rownum][colnum] =  df.formatCellValue(cell);
                    System.out.print(df.formatCellValue(cell).toUpperCase() + " ");
                    colnum++;

                }

                rownum++;
                System.out.println();

        }     
            file.close();
            workbook.close();
        } catch (Exception e) {

            e.printStackTrace();

        }
    }
...