2010年2月5日 星期五

如何將Ruby on rails的網頁輸出至excel

這個問題困擾了我幾天, 因為一想到excel就想到要將檔案轉成xls格式,可是,xls格式是微軟的,應該沒這麼輕易使用才是, 上google大神找也是找不到什麼簡便的方法, 後來就退而求其次, 改採csv(comma-separated values )格式餵給excel好了, 這次就比較簡單, 找到了comma, 然後照github上的說明依樣畫葫蘆其實就可以使用了, 只是, 接著就有個大問題,

輸出中文會有亂碼

解了很久還是解不出來, 不知該從哪裡動手腳, 所以又再找其他方法.
最後突然靈機一動, xml, 之前都沒想到, office excel, word 都可以吃xml格式的檔案, 哈哈!!

而且Ruby on rails有支援輸出xml, 這真是太方便了.
這裡就沒有中文亂碼問題啦!!

最後, 又有點小問題, 想要改成讓使用者點該連結時直接下載,
當下是想到可以用javascript, 然後又想到jquery, 最後才想到, 會不會ruby on rails本身就有呢?
果不其然, 是有這個method, send_file, 只是, 用了半天, 才發現, 他的路徑參數是使用系統路徑, 例如/webapps/rails/public/file/image.jpg, 而不是網址, 這也真的滿令人困擾的, 試半天都不行, 後來才用轉去看看別的語言和javascript是如何做到, 最後才發現, 只要更改header中的content-disposition即可, 也就是在xml.builder中, 加上
response.headers['Content-Disposition'] = 'attachment; filename=thefile.csv'
其實一開始也有找到此方法, 只是當初使用時沒有反應, 所以就沒理他了. 沒想到死馬當活馬醫, 就這麼神奇的有反應了, 哈哈, 不過我想應該是有網站cache的關係, 後來有問題時, 就強迫重新啟動伺服器就沒問題啦.

沒有留言: