Как прочитать файл excel и поместить его в массив?

Итак, я работаю над школьным проектом, где мне нужно прочитать файл excel в массив, а затем использовать эти данные, манипулировать и давать ответы пользователю. Я даже не могу понять, как установить файл равным массиву, а затем оттуда получить из него определенные биты данных. Любая помощь будет оценена по достоинству. Вот фактическая подсказка вопроса:

Разработайте приложение Java, которое будет читать файл, содержащий данные, относящиеся к США. Статистика преступности за 1994-2013 гг. Описание файла показано ниже. Приложение должно предоставлять статистические результаты по данным. Используйте массивы и классы Java для хранения данных. (Подсказка: вы можете и должны создать USCrimeClass для хранения полей. Вы также можете иметь массив объектов US Crime.)


person Chris B.    schedule 15.10.2016    source источник


Ответы (1)


Я скопировал это с официального сайта и добавил несколько строк TODO в качестве руководства для вас. Вы найдете решение, следуя этому плану. Я не даю точного ответа, потому что это ваша задача.

Одна строка Excel == объект USCrimeClass

Вы должны создать класс, который сопоставляется с классом Row. Этот класс должен называться USCrimeClass.

Криминальный класс США

USCrimeClass должен иметь поля, которые сопоставляются с ячейками в строке.

пример :

с 1994-2013 гг.

Официальный справочник

Получение содержимого ячейки Чтобы получить содержимое ячейки, вам сначала нужно узнать, что это за ячейка (например, если запросить у строковой ячейки ее числовое содержимое, вы получите исключение NumberFormatException). Итак, вы захотите включить тип ячейки, а затем вызвать соответствующий геттер для этой ячейки.

В приведенном ниже коде мы перебираем каждую ячейку на одном листе, распечатываем ссылку на ячейку (например, A3), а затем содержимое ячейки.

// import org.apache.poi.ss.usermodel.*;

DataFormatter formatter = new DataFormatter();
Sheet sheet1 = wb.getSheetAt(0);

//TODO int numberOfRows=getNumberOf Rows from sheet1;
//TODO USCrimeClass[] arrayOfUSCrimeClass =new USCrimeClass [numberOfRows](); 

for (Row row : sheet1) {

     //TODO create new object of USCrimeClass
     //TODO USCrimeClass objectUSCrimeClass=new USCrimeClass();
    for (Cell cell : row) {
        CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());
        System.out.print(cellRef.formatAsString());
        System.out.print(" - ");

        // get the text that appears in the cell by getting the cell value and applying any data formats (Date, 0.00, 1.23e9, $1.23, etc)
        String text = formatter.formatCellValue(cell);
        System.out.println(text);

        // Alternatively, get the value and format it yourself
        switch (cell.getCellTypeEnum()) {
            case CellType.STRING:
                System.out.println(cell.getRichStringCellValue().getString());
                //TODO set values to feild from excel cell objectUSCrimeClass.setFrom(cell.getRichStringCellValue().getString());
                break;
            case CellType.NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    System.out.println(cell.getDateCellValue());
                } else {
                    System.out.println(cell.getNumericCellValue());
                }
                break;
            case CellType.BOOLEAN:
                System.out.println(cell.getBooleanCellValue());
                break;
            case CellType.FORMULA:
                System.out.println(cell.getCellFormula());
                break;
            case CellType.BLANK:
                System.out.println();
                break;
            default:
                System.out.println();
        }
    }

//TODO add row object to array or list  arrayOfUSCrimeClass[i]=objectUSCrimeClass;
}

Извлечение текста

Для большинства требований по извлечению текста стандартный класс ExcelExtractor должен предоставить все необходимое.

InputStream inp = new FileInputStream("workbook.xls");
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
ExcelExtractor extractor = new ExcelExtractor(wb);

extractor.setFormulasNotResults(true);
extractor.setIncludeSheetNames(false);
String text = extractor.getText();

https://poi.apache.org/spreadsheet/examples.html

https://poi.apache.org/spreadsheet/quick-guide.html#Iterator

person Sanka    schedule 15.10.2016