2010-10-25 100 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