<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    web導出excel格式問題 、、、如何讓導出到Excel的數字不按科學計數顯示。。

    1  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文件,然后當這個國家或地區的用戶查看時,就把對應的格式化信息讀取出來應用到數據上即可。

    以上這個例子是我突然想到的,相信跨國企業的公司會遇到類似的問題,解決方法只是提供給大家一個思路,希望可以起到拋磚引玉的效果。

    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());





    2  導出EXCEL表格不顯示科學計數法 

    public void CreateExcel(DataSet ds,string typeid,string FileName)
    {
    HttpResponse resp;
    resp = Page.Response;
    resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
    resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
    resp.Charset ="UTF-8";
    //HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
    resp.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel
    string colHeaders= "", ls_item="";
    int i=0;

    //定義表對象與行對像,同時用DataSet對其值進行初始化
    DataTable dt=ds.Tables[0];
    DataRow[] myRow=dt.Select("");
    // typeid=="1"時導出為EXCEL格式文件;typeid=="2"時導出為XML格式文件
    if(typeid=="1")
    {

    //取得數據表各列標題,各標題之間以\t分割,最后一個列標題后加回車符
    colHeaders += "<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\"> <tr style=\"font-weight: bold; white-space: nowrap;\">";
    for(i=0;i<dt.Columns.Count-1;i++)
    //colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
    colHeaders += "<td>"+dt.Columns[i].Caption.ToString() + "</td>";
    //colHeaders +=dt.Columns[i].Caption.ToString() +"\n";
    colHeaders += "<td>"+dt.Columns[i].Caption.ToString() + "</td></tr>";
    //向HTTP輸出流中寫入取得的數據信息
    resp.Write(colHeaders);
    //逐行處理數據
    foreach(DataRow row in myRow)
    {
    ls_item += "<tr>";
    //在當前行中,逐列獲得數據,數據之間以\t分割,結束時加回車符\n
    for(i=0;i<dt.Columns.Count-1;i++)
    //ls_item +=row[i].ToString().Replace("\t","") + "\t";
    ls_item +="<td style=\"vnd.ms-excel.numberformat:@\">"+ row[i].ToString().Replace("\t", "") + "</td>";
    ls_item += "<td>"+row[i].ToString().Replace("\t","") +"</td></tr>";
    //當前行數據寫入HTTP輸出流,并且置空ls_item以便下行數據
    resp.Write(ls_item);
    ls_item="";
    }
    }
    else
    {
    if(typeid=="2")
    {
    //從DataSet中直接導出XML數據并且寫到HTTP輸出流中
    resp.Write(ds.GetXml());
    }
    }
    //寫緩沖區中的數據到HTTP頭文件中
    resp.End();
    }



    3 加個引號



    4 通過CSS

    .txt {
    padding-top:1px;
    padding-right:1px;
    padding-left:1px;
    mso-ignore:padding;
    color:black;
    font-size:11.0pt;
    font-weight:400;
    font-style:normal;
    text-decoration:none;
    font-family:宋體;
    mso-generic-font-family:auto;
    mso-font-charset:134;
    mso-number-format:"\@";
    text-align:general;
    vertical-align:middle;
    mso-background-source:auto;
    mso-pattern:auto;
    white-space:nowrap;
    }




    posted on 2012-09-13 18:47 ** 閱讀(2720) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV成人一区二区三区观看| 中文字幕免费视频一| 亚洲av日韩综合一区久热| 亚洲欧美日韩综合俺去了| 中文字幕亚洲情99在线| 亚洲午夜无码久久久久小说| 亚洲精品国产高清在线观看| 亚洲hairy多毛pics大全| 国产精品亚洲天堂| 一级毛片免费在线观看网站| 久青草视频在线观看免费| 久久免费高清视频| 91嫩草免费国产永久入口| 国产乱码免费卡1卡二卡3卡| 日韩激情淫片免费看| 亚洲第一区精品日韩在线播放| 精品亚洲一区二区三区在线播放| 亚洲精品无码久久久久sm| 亚洲欧洲第一a在线观看| youjizz亚洲| 亚洲国产精品成人午夜在线观看| 成年免费大片黄在线观看com| 日韩a级无码免费视频| 久久精品免费一区二区| 国产精品久免费的黄网站| 国产亚洲一区二区手机在线观看| 亚洲第一成年网站大全亚洲| 噜噜综合亚洲AV中文无码| 中国一级毛片免费看视频| 免费国产成人高清在线观看网站| 四虎影视永久免费观看| 亚洲AV无码专区国产乱码4SE| 亚洲国产视频网站| 全部一级一级毛片免费看| 久久精品乱子伦免费| 97人伦色伦成人免费视频| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲AV成人精品网站在线播放| 亚洲色欲色欲www在线播放| 99在线视频免费观看| 全免费a级毛片免费看不卡|