<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        頁面導出為Excel的時間格式的問題

        來源:懂視網 責編:小采 時間:2020-11-27 22:44:52
        文檔

        頁面導出為Excel的時間格式的問題

        頁面導出為Excel的時間格式的問題:現象: 是這樣的,公司的一個系統,新增加一個新的功能,在頁面生成報表時允許用戶選擇他prefer的時間格式,有下面四種時間格式可供選擇: Default Option: yyyy-mm-dd Descriptive (1-Jan-07) Short Date: mm/dd/yy Short Dat
        推薦度:
        導讀頁面導出為Excel的時間格式的問題:現象: 是這樣的,公司的一個系統,新增加一個新的功能,在頁面生成報表時允許用戶選擇他prefer的時間格式,有下面四種時間格式可供選擇: Default Option: yyyy-mm-dd Descriptive (1-Jan-07) Short Date: mm/dd/yy Short Dat

        現象:
        是這樣的,公司的一個系統,新增加一個新的功能,在頁面生成報表時允許用戶選擇他prefer的時間格式,有下面四種時間格式可供選擇:
        Default Option: yyyy-mm-dd
        Descriptive (1-Jan-07)
        Short Date: mm/dd/yy
        Short Date: dd/mm/yy
        另外,用戶可以選擇報表是頁面形式還是導出為Excel文件。原有的處理在頁面上顯示時間格式沒有任何問題,但是昨天發現,如果導出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文件,然后當這個國家或地區的用戶查看時,就把對應的格式化信息讀取出來應用到數據上即可。
        以上這個例子是我突然想到的,相信跨國企業的公司會遇到類似的問題,解決方法只是提供給大家一個思路,希望可以起到拋磚引玉的效果。
        DataGrid:
        Asp.Net WebForm中DataGrid導出的時候,在ItemDataBound內
        if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
        e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
        }
        如果在WinForm內則可以
        Excel.Range range = (Excel.Range)worksheet.Cells[1,1];
        range.NumberFormat = Excel.XlParameterDataType.xlParamTypeUnknown;
        VB:
        If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
        e.Item.Cells(1).Attributes.Add("style", "vnd.ms-excel.numberformat:@")
        End If
        如果是Label,則在<td>的style中加上:
        <td style="height: 22px; vnd.ms-excel.numberformat:@" bgcolor="#eff3fb">
        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></td>
        如果是Gridview,(07.12.13 Update)
        則需要在后臺打印click事件代碼中加兩句話:
        // More Codes
        string style = @"<style> .text { mso-number-format:\@; } </script> ";
        Response.Write(style);
        Response.Output.Write(oStringWriter.ToString());
        ---------------------------------------------------------------
        下面開始說我處理這個問題的過程:
        首先,根據上面那篇文章中說的那樣,在<td></td>標簽上加上style屬性,并根據用戶選擇的時間格式設定:
        <TD VALIGN=TOP style="vnd.ms-excel.numberformat:<%=DateFormat%>">...</td>
        然后開始測試,結果前三種時間格式都沒問題,最后一個:dd/mm/yy,有的時間正確的,有的是錯誤的,錯誤的時間均為dd>12的那些。為什么會這樣呢,經過反復的測試琢磨,最后終于弄清楚了:原來,在我們使用導出數據到Excel中去時,Excel會從中作梗!不只是這樣,我們可以試著在Excel中輸入時間,不管你輸入的是什么格式,它都會把這個時間強行轉化為 mm/dd/yyyy 格式。我傳過去的日期(例如:30/10/08)到它那邊,它就傻了,因為它不認識了,然后在cell里顯示時,就老老實實地顯示為30/10/08,也算歪打正著吧(其實是錯的)。但是如果是 1/10/08 (這個是我已經轉換好的 dd/mm/yy 格式)呢?它可不管,認為這個(1/10/08)是 mm/dd/yy 格式的,不管三七二十一,轉換為 1/10/2008,注意,這個( 1/10/2008)的意思是 2008年1月10日,已經完全背離了我的意愿了:(
        忘了說一個東西了,我們從數據庫中取出日期數據時,會根據用戶選擇的格式(上面列出的4種格式)來進行format。這時我想到一個trick,就是如果用戶選擇的是dd/mm/yy這種格式,我先不把date格式化為 dd/mm/yy,而是mm/dd/yy,這樣數據到達Excel時它就可以分辨出來了,同時,由于我指定了<td>的 style 屬性,excle會嚴格地按照那種格式來進行顯示(不管Excel上顯示的時間格式是什么樣的,當你編輯時間是,你會看到,你可以編輯的格式永遠是 mm/dd/yyyy)。
        至此,問題圓滿得到解決。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        頁面導出為Excel的時間格式的問題

        頁面導出為Excel的時間格式的問題:現象: 是這樣的,公司的一個系統,新增加一個新的功能,在頁面生成報表時允許用戶選擇他prefer的時間格式,有下面四種時間格式可供選擇: Default Option: yyyy-mm-dd Descriptive (1-Jan-07) Short Date: mm/dd/yy Short Dat
        推薦度:
        標簽: 格式 頁面 問題
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久青草国产免费观看| 国产免费福利体检区久久| 亚洲免费视频播放| 99人中文字幕亚洲区| 免费不卡在线观看AV| 亚洲高清中文字幕| 1000部啪啪毛片免费看| 亚洲中文字幕日本无线码| 99精品全国免费观看视频| 亚洲av色香蕉一区二区三区蜜桃| 国产福利免费在线观看| 高h视频在线免费观看| 亚洲五月六月丁香激情| 亚洲免费精彩视频在线观看| 久久精品国产亚洲AV嫖农村妇女| 97视频免费观看2区| 7777久久亚洲中文字幕| 四虎免费永久在线播放| 国产福利免费视频| 亚洲黄色免费电影| 成人a免费α片在线视频网站| 天天综合亚洲色在线精品| 精品亚洲一区二区三区在线播放| 成全视频在线观看免费| 亚洲精品国产情侣av在线| 我要看免费的毛片| 青草青草视频2免费观看| 亚洲AV无码专区国产乱码电影 | 亚洲AV永久无码精品成人| **俄罗斯毛片免费| 校园亚洲春色另类小说合集| 伊人久久大香线蕉亚洲五月天| 久久久久国产精品免费网站| 亚洲午夜福利在线视频| 久久精品亚洲男人的天堂| 91嫩草免费国产永久入口| 亚洲av无码成人精品区一本二本| 亚洲中文无韩国r级电影| 国产成人精品免费午夜app| 免费大片av手机看片| 色播亚洲视频在线观看|