2011-09-18 27 views
0

我正在使用電子表格寶石。如何拆分,刪除列中的部分數據;

我的代碼是:

book = Spreadsheet.open 'excel-file.xls' 
sheet = book.worksheet 0 
book.write 'output-file.xls' 

我想刪除一個列後 「;」 談到數據:

FULTON BANK NA;FULTON BANK 

我只是希望它是FULTON BANK NA例如。

另外,我要離開這樣的價格數據:$78,000.00,並想從一個特定的列剝離 所有其他數據:

MORTGAGE - CORPORATE;($78,000.00) 

我只是希望它是$78,000.00例如。

回答

2

你可以這樣來做:

s = 'FULTON BANK NA;FULTON BANK' 
s = s[/[^;]+/] 

將在s第一個分號之前離開每一個。或者你可以這樣說:

s = s.split(';')[0] 

s.gsub!(/;.*/, '') # This modifies s in place 

對於第二個,它取決於你的數據的格式,但你可以用這個啓動:

s = 'MORTGAGE - CORPORATE;($78,000.00)' 
s = s[/\(([^)]+)\)/, 1] 

或,如果最後一個組件可能有或沒有括號,可以這樣做:

s = s.split(';')[-1].tr('()', '') 

這會將s拆分成分號(split(';')),取最後一個組件([-1]),然後刪除那裏的所有括號(.tr('()', ''))。

+0

感謝畝,我看到它在軌道本身工作正常,但更改不會顯示在導出的Excel文件中。對於不包含「;」的單元也會返回null (分號)任何想法,爲什麼它可能是這樣? – ghaydarov

+0

@ user848316:你可以做's = s [/ [^;] + /] || s'或'column = column.to_s.gsub(/;.*/,'')'來解決'nil'問題。然後,您需要用電子表格中的新值替換舊值。 –

+0

hey there again ..我不知道爲什麼,當我在做一些電子表格寶石像隱藏幾列時,它只有當我包含這個代碼時才起作用:format = Spreadsheet :: Format.new sheet.row(2).default_format = format否則無法正常工作 – ghaydarov