所以我正在开展一个学校项目,我必须将一个excel文件读入一个数组,然后使用该数据并操纵并给用户提供答案。我甚至无法弄清楚如何将文件设置为等于数组,然后从那里获取特定的数据位。任何帮助,将不胜感激。这是实际的问题提示:
设计一个Java应用程序,该应用程序将读取包含与美国相关的数据的文件。 1994 - 2013年的犯罪统计数据。该文件的描述如下所示。应用程序 应提供有关数据的统计结果。 使用数组和Java类来存储数据。 (提示:你可以而且应该创造一个 USCrimeClass存储字段。你也可以拥有一个美国犯罪对象阵列。)
答案 0 :(得分:0)
我已从官方网站复制此内容并添加一些TODO行作为指导。按照此大纲,您将找到解决方案。我没有给出确切的答案,因为这是你的任务。
一个Excel行== USCrimeClass对象
您必须创建一个映射到Row类的类。该类应命名为USCrimeClass。
<强> USCrimeClass 强>
USCrimeClass应该包含映射到一行中单元格的字段。
示例:
从1994年至2013年
获取单元格内容 要获取单元格的内容,首先需要知道它是什么类型的单元格(例如,询问字符串单元格的数字内容将获得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