【发布时间】:2012-02-20 09:10:08
【问题描述】:
我需要读取一个excel文件并将数据从excel表上传到数据库。
excel表格将包含用户的名字,姓氏,电子邮件,年龄,加入日期,国家等信息。
我也会在数据库中有类似的用户表。
我只需要从 excel 表中读取每一行并插入到表中。
但为此我需要知道 excel 中的哪一列将进入 db 表中的哪一列。
我打算将表中的列名(即用户 java bean 的属性名)静态映射到 excel 表中的相应索引。
例如lastName 映射到 Excel 工作表中的索引 2。
如果这是正确的方法,请帮助我?
最好的方法是什么?
【问题讨论】:
-
您可能应该指定数据库/语言(尽管我们可以假设它是 Java)。也就是说,我认为您可能会在这里找到解决方案:vogella.de/articles/JavaExcel/article.html - 您可以调整它以读取每一行并重新组织这些数据,以便使用 JDBC/Hibernate/whatever 插入到您的数据库中
-
另外,您可以使用输入的第一行作为标签,并让应用程序在第一次迭代时为您枚举这些标头值。这意味着您不必遵守“lastName maps to index 2”约定,只要您将列命名为“lastName”,因为您可以将字符串/标签与电子表格中的索引/列相关联。可能有一种更清洁的方法来执行此操作,但它应该可以工作并且比您当前的解决方案提供更多的灵活性。如果您想要正确的答案,请发布上述问题的答案。
-
@Aaron Newton。感谢你的回答。我将使用 java 和 oracle
-
@AaronNewton 创建 Excel 工作表不在我的控制范围内。列可以有任何标题。
-
如果电子表格之间的列标题不一致,那么使用列索引可能是一个好方法。就将其放入数据库和分离业务逻辑/应用程序/解耦的良好做法而言,您可以尝试使用 Hibernate roseindia.net/hibernate/firstexample.shtml javabeat.net/tips/81-batch-insert-in-hibernate.html