Web頁面的數據導出excel時的格式問題

當我們把web頁面上的數據導成excel形式時,有時候我們的數據需要以特定的格式呈現出來,這時候我們就需要給cell添加一些樣式規格信息。
       首先,我們瞭解一下excel從web頁面上導出的原理。當我們把這些數據發送到客戶端時,我們想讓客戶端程序(瀏覽器)以excel的格式讀取它,所以把mime類型設爲:application/vnd.ms-excel,當excel讀取文件時會以每個cell的格式呈現數據,如果cell沒有規定的格式,則excel會以默認的格式去呈現該cell的數據。這樣就給我們提供了自定義數據格式的空間,當然我們必須使用excel支持的格式。下面就列出常用的一些格式:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 數字:vnd.ms-excel.numberformat:#,##0.00
4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
這些格式你也可以自定義,比如年月你可以定義爲:yy-mm等等。那麼知道了這些格式,怎麼去把這些格式添加到cell中呢?很簡單,我們只需要把樣式添加到對應的標籤對(即閉合標籤)即可。如<td></td>,給標籤對<td></td>添加樣式,如下:

<td style="vnd.ms-excel.numberformat:@">410522198402161833</td>

同樣,我們也可以給<div></div>添加樣式,也可以給<tr></tr>,<table></table>添加樣式,這樣就會引入一個問題,你注意到了嗎?先看如下的代碼:

<table style=’vnd.ms-excel.numberformat:#,##0.00’>
    
<tr>
        
<td>542</td>
        
<td style=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>
    
</tr>
</table>

對,當我們在父標籤對和子標籤對都添加樣式時,數據會以哪一個樣式呈現呢?經過測試,會以離數據最近的樣式呈現,這也是符合我們的意願的(好像也符合一句俗話:縣官不如現管)。這樣我們就可以通過改變樣式而改變數據在excel中呈現的方式(這些樣式規格你可以在前臺頁面上添加也可以在後臺代碼裏給相應的控件如:DataGrid等添加這些樣式)。如果你的應用比較簡單,那麼這已經足夠滿足你的需求。但如果你的應用比較複雜,那麼你也可以採取一種方式來達到不同的數據呈現效果。下面,我就舉一個稍微複雜一點的應用。
       例如:你的數據要呈現給不同國家和地區的用戶查看,這樣數據的呈現的格式就會不一樣,那麼我們怎麼解決這個問題呢?當然了,你可以手工把這些數據處理好,但這畢竟不是最好的方法,因爲如果我們每增加一個其他國家或地區的用戶,那麼我們就需要把所有的數據以客戶要求的格式處理一遍,當數據量很大時,這無疑是一件很沉重且無聊的工作。那麼我們究竟應該怎樣解決類似這樣的問題呢?下面我說一下,我自己的看法:把這些格式化的信息抽取到一個xml文件中,程序運行時根據不同的客戶讀取不同的格式化信息,然後把這些格式化信息動態的添加到我們的數據上,這樣,當我們每增加一個其他國家或地區的用戶時,我們只需要多增加一個xml文件,把對應的格式化信息寫入這個xml文件,然後當這個國家或地區的用戶查看時,就把對應的格式化信息讀取出來應用到數據上即可。
       以上這個例子是我突然想到的,相信跨國企業的公司會遇到類似的問題,解決方法只是提供給大家一個思路,希望可以起到拋磚引玉的效果。

http://www.cnblogs.com/rijing2004/archive/2007/02/06/642349.html
發佈了1 篇原創文章 · 獲贊 5 · 訪問量 257萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章