2011-01-08 28 views
1

基本上我從Joomla Virtuemart導出了一個csv文件。任務是將每一行的貨幣兌換成新貨幣。我們有EEKs(愛沙尼亞克朗)在使用,但從那一年起,我們兌歐元(歐元),貨幣比EEKs大15.64664倍。因此,我必須將每一行的舊價格與15.64664分開,以將其轉換爲歐元,然後輸出文件,就像以前一樣,但知道價格已更改。用於更改csv格式文件中每行的特定值的Java代碼

基本上我的想法是採取價格,把它們放在一個單獨的數組中,將它們除以15.64664,然後在正確的位置將新值寫回csv格式行。

文件看起來像這樣(這裏有三個獨立的線):

~product_sku~^~product_parent_sku~^~category_path~^~product_name~^~product_s_desc~^~product_desc~^~product_price~^~product_full_image~^~product_thumb_image~^~product_availability~^~product_available_date~^~product_currency~^~product_discount~^~product_discount_date_end~^~product_discount_date_start~^~product_packaging~^~product_publish~^~product_special~^~product_tax~ 
~000358~^~~^~IT SEADMED (tellimisel)/Computing/PC Components/PSU~^~Codegen power supply ATX PSU 350W V2.03 P4 CE PFC PSU (SILENT/ 1~^~~^~Codegen power supply ATX PSU 350W V2.03 P4 CE PFC PSU (SILENT/ 12cm fan)~^~43.33~^~http://s3.acme.lt/products/000358/photos/large/1.jpg~^~http://s3.acme.lt/products/000358/photos/small/1.png~^~~^~13/10/2010 00:00:00~^~EUR~^~~^~~^~~^~0~^~Y~^~~^~20.00~ 
~000390~^~~^~IT SEADMED (tellimisel)/Computing/Peripherals/Keyboards~^~Chicony multimedia keyboard KU-0420, LT/RUS, USB, 17 multimedia ~^~~^~Chicony multimedia keyboard KU-0420, LT/RUS, USB, 17 multimedia hotkeys, slim shape design, thin keycaps, silver/black~^~27.50~^~http://s3.acme.lt/products/000390/photos/large/1.jpg~^~http://s3.acme.lt/products/000390/photos/small/1.png~^~~^~~^~EUR~^~~^~~^~~^~0~^~Y~^~~^~20.00~ 

第一行是名符(〜)和字段分隔符(^)字段名。正如你所看到的,價格是第七名的字段名稱。 是否可以編寫一個採用價格值的java代碼(從第二行開始,沒有字段和名稱分隔符)將其放入數組中。那麼該數組中的每個值除以15.64664,之後舊價格值將被新的已分割和格式化(小數點後兩位)值替換?

如果重要,可以從.txt或.csv文件讀取數據。

如果有人能指出我正確的方向,我將不勝感激。 :)

回答

2

我會逐行讀取文件,然後使用正則表達式來獲得價格,進行計算並用新的價格將該行寫回到另一個文件。

必須是java嗎?雖然這可以很容易地用Java來完成,但是perl/ruby​​和python在這些方面更好(至少少量代碼行)。

3

您可以試試OpenCSV庫。他們也在他們的網站上有示例代碼。

3

您可以在Microsoft Excel或任何其他電子表格程序中導入文件,然後使用公式在新列或同一列中進行更改,然後將其導出爲CSV文件。

這應該很快。

相關問題