java - 从 Excel 文件读取数据的更好方法

标签 java excel apache-poi

我必须从大约有 40 列的 Excel 文件中读取数据,并且我正在使用列索引一一读取它。即:

Cell cell = row.getCell(0);
if (!(cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK)) {
            cell.setCellType(Cell.CELL_TYPE_STRING);
            // set in setter
        }

但是这种方法与 Excel 文件的结构紧密结合,因为如果在其间添加任何新列,则将需要主要代码(列的索引值)。

请建议我任何从 Excel 文件读取数据的有效方法,该方法应该与 Excel 的结构松散耦合,或者是否有任何其他方法可以提供列与 Java 对象字段的绑定(bind)。

最佳答案

我建议添加一个带有列信息(即名称)的标题行并相应地处理列(即将它们映射到java对象)。也许您甚至可以使用反射 API 来反序列化对象。类似的东西用于将java对象保存到数据库,我在这里不太擅长,但你可以谷歌并检查。

该标题行可以在 XL 中隐藏。

或者您可以将映射信息放入您的 java 代码中(不修改原始 XL 文件) - 只需为其定义一个数据结构,而不是像 row.getCell(0) 那样硬编码常量 - 它应更改为解释有关 XL 文件中列的元数据。

换句话说,您将拥有正在处理的每个 XL 文件的数据定义,以及根据该定义处理 XL 文件的通用代码。您应该有一个以 XL 文件名和定义文件作为参数的例程。

关于java - 从 Excel 文件读取数据的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974622/

相关文章:

java - 加载简单 GWT View 时出现异常

excel - 为什么我得到这个公式有问题?

java - 如何使用 POI 链接 Excel 文件中的图像

java - 如何在 Android studio 中获取 map 标记的字符串位置?

java - 如何将字符串中的日期转换为 Sql 日期?

java - JAVA中不同长度的XOR Hex String

excel - 在 libre office 的源代码中哪里可以找到 excel 文件解析器?

excel - 如何在vba中的Rows()函数中使用OFFSET函数

java - Apache POI - 缓存工作簿是重用的最佳方式吗?

java - 如何设置Excel中行的数据格式?