2010-10-25 37 views
1

我有一个包含单个客户端服务交付信息的Excel电子表格。例如,马克斯公司将在其3家公司办公室提供健康评估。办公室可能会在多天内交付健康评估(服务类型),并由不同的医生执行。 我创建了我认为是JavaBeans的最终代表所有这些信息以及实体(如客户端,交付,服务和交付中的单个会话)之间的关系。 我现在的问题是,从Excel电子表格中读取和解析数据的最佳方式是什么? 我想我可以创建一个静态util类(如工厂类),它可以在一个方法中读取excel电子表格(使用Apache POI HSSF),然后使用各种其他方法从电子表格中解析数据,然后最终返回一个包含所有其他对象的客户端对象等等。 在这个过程中的某个时刻,我还需要一些来自SQL Server数据库的数据,我认为我会根据需要使用JDBC。在Excel中将Excel电子表格解析为模型

我用这种方法朝着正确的方向前进吗?或者会推荐以另一种方式做这件事?

+1

可能你应该看看http://jxls.sourceforge.net/,如果它能解决你的问题,而不是简单的POI。 – khmarbaise 2010-10-25 07:53:37

+0

@khmarbaise - 我已经快速浏览了jxls,它似乎与ORM非常相似。 :-)肯定会更容易将数据拉入javabeans。 – max 2010-10-26 07:39:12

回答

1

尝试简化这一点。将电子表格保存为CSV文件,该文件非常容易导入到Java中并随后导入到数据库中。

您可以使用BufferedReader读取字符串并在每个分隔符“,”处拆分它们。使用每个拆分字符串,您将获得一个可添加到数据库的数组。

绝对尽量避免与Excel接口。

0

使用POI简单地从Excel工作表中读取单元格很容易。请参阅:http://poi.apache.org/spreadsheet/quick-guide.html#CellContents

这将避免任何手动步骤,如转换为其他格式。
您真正需要的是一种工厂方法,可以在电子表格中读取并返回对象列表。然后你可以做你的事情。

+0

我写了一个名为DeliveryScheduleParser的类,它读入电子表格,并且有几个方法可以将电子表格中数据的大部分解析处理成对象。我还创建了一个静态实用程序类,在转储到对象之前清除一些数据。在DeliveryScheduleParser类中,我将一个File对象传递给设置类的状态的构造函数。一个名为getClient的公共方法然后返回加载了所有其他所需对象的客户端对象。那个听起来是对的吗? – max 2010-11-01 04:36:14

+0

@max - 这将工作。我会通过流而不是,但这是一个小细节。 – 2010-11-01 11:37:51