Java读取Excel到Map集合方法详解

4星 · 超过85%的资源 需积分: 50 255 下载量 109 浏览量 更新于2024-09-16 收藏 2KB TXT 举报
"该代码示例提供了一个方法,用于读取Excel文件并将数据存储到一个由整数键映射到另一个整数到字符串映射的Map集合中。它使用Apache POI库处理Excel文件,根据单元格类型解析数据,并将其放入结果Map中。" 在Java开发中,有时我们需要处理Excel文件并从中提取数据。Apache POI是一个流行的开源库,专门用于读写Microsoft Office格式的文件,包括Excel。在这个给定的代码段中,我们看到如何使用POI库来实现一个功能,即读取Excel文件并将数据存储到Map集合中。 首先,定义了一个方法`importReportExcel`,它接受两个参数:一个是Excel模板路径(`excelTemplatePath`),另一个是索引(`index`),用于获取工作表。这个方法返回一个`Map<Integer, Map<Integer, String>>`,其中外层的Map的键是行号,值是内层的Map,内层Map的键是列号,值是单元格的文本内容。 在方法内部,创建了一个新的File对象以代表Excel文件,然后使用`HSSFWorkbook`实例来打开它。`HSSFWorkbook`是Apache POI库中用于处理老版Excel文件(.xls)的类。通过`FileInputStream`从文件中读取数据。 接着,使用`workbook.getSheetAt(index)`获取指定索引的工作表。对于工作表中的每一行(`Row`),都会创建一个新的`Map<Integer, String>`(`mapColumn`),用于存储当前行的列数据。对于每一行中的每一个单元格(`Cell`),会检查其类型(`getCellType()`),并根据类型转换其内容。 这里使用了`switch`语句来处理不同类型的单元格: - `CELL_TYPE_BLANK`表示单元格为空,内容设为""。 - `CELL_TYPE_BOOLEAN`表示单元格包含布尔值,内容转为字符串。 - `CELL_TYPE_ERROR`表示单元格包含错误,内容是错误代码的字符串形式。 - `CELL_TYPE_FORMULA`表示单元格包含公式,内容是公式本身。 - `CELL_TYPE_NUMERIC`表示单元格包含数字。这里还特别处理了日期格式的单元格,如果单元格被格式化为日期,就使用`HSSFDateUtil.isCellDateFormatted()`进行检查,并使用`DataFormatter`将日期值转换为"yyyy-mm-dd"格式的字符串。 最后,将处理过的单元格内容添加到`mapColumn`,然后将`mapColumn`添加到`mapRow`,表示完成了这一行的数据收集。当所有行都被处理后,整个方法返回`mapRow`,其中包含了Excel文件中所有数据的映射。 这段代码展示了如何利用Apache POI库高效地读取Excel文件并以结构化的形式存储数据,这对于数据分析、报告生成或其他需要处理Excel数据的场景非常有用。