如何读取excel文件并将其放入数组?

时间:2016-10-15 02:24:03

标签: java arrays readfile

所以我正在开展一个学校项目,我必须将一个excel文件读入一个数组,然后使用该数据并操纵并给用户提供答案。我甚至无法弄清楚如何将文件设置为等于数组,然后从那里获取特定的数据位。任何帮助,将不胜感激。这是实际的问题提示:

设计一个Java应用程序,该应用程序将读取包含与美国相关的数据的文件。 1994 - 2013年的犯罪统计数据。该文件的描述如下所示。应用程序 应提供有关数据的统计结果。 使用数组和Java类来存储数据。 (提示:你可以而且应该创造一个 USCrimeClass存储字段。你也可以拥有一个美国犯罪对象阵列。)

1 个答案:

答案 0 :(得分:0)

我已从官方网站复制此内容并添加一些TODO行作为指导。按照此大纲,您将找到解决方案。我没有给出确切的答案,因为这是你的任务。

一个Excel行== USCrimeClass对象

您必须创建一个映射到Row类的类。该类应命名为USCrimeClass。

<强> USCrimeClass

USCrimeClass应该包含映射到一行中单元格的字段。

示例:

从1994年至2013年

Official Reference

获取单元格内容 要获取单元格的内容,首先需要知道它是什么类型的单元格(例如,询问字符串单元格的数字内容将获得NumberFormatException)。因此,您需要打开单元格的类型,然后为该单元格调用适当的getter。

在下面的代码中,我们遍历一张纸上的每个单元格,打印出单元格的引用(例如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