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

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

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

    pzxsheng

    有種相見不敢見的傷痛,有種愛還埋藏在心中

    web導(dǎo)出excel數(shù)據(jù)格式化

    原文地址:http://www.cnblogs.com/myaspnet/archive/2011/05/06/2038490.html


    當(dāng)我們把web頁面上的數(shù)據(jù)導(dǎo)成excel形式時,有時候我們的數(shù)據(jù)需要以特定的格式呈現(xiàn)出來,這時候我們就需要給cell添加一些樣式規(guī)格信息。 


    首先,我們了解一下excel從web頁面上導(dǎo)出的原理。當(dāng)我們把這些數(shù)據(jù)發(fā)送到客戶端時,我們想讓客戶端程序(瀏覽器)以excel的格式讀取它,所以把mime類型設(shè)為:application/vnd.ms-excel,當(dāng)excel讀取文件時會以每個cell的格式呈現(xiàn)數(shù)據(jù),如果cell沒有規(guī)定的格式,則excel會以默認(rèn)的格式去呈現(xiàn)該cell的數(shù)據(jù)。這樣就給我們提供了自定義數(shù)據(jù)格式的空間,當(dāng)然我們必須使用excel支持的格式。下面就列出常用的一些格式: 

    1)  文本:vnd.ms-excel.numberformat:@ 

    2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd 

    3)  數(shù)字:vnd.ms-excel.numberformat:#,##0.00 

    4)  貨幣:vnd.ms-excel.numberformat:¥#,##0.00 

    5)  百分比:vnd.ms-excel.numberformat: #0.00% 

    這些格式你也可以自定義,比如年月你可以定義為:yy-mm等等。那么知道了這些格式,怎么去把這些格式添加到cell中呢?很簡單,我們只需要把樣式添加到對應(yīng)的標(biāo)簽對(即閉合標(biāo)簽)即可。如<td></td>,給標(biāo)簽對<td></td>添加樣式,如下: 

    <td style="vnd.ms-excel.numberformat:@">410522198402161833</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>
    <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>


    對,當(dāng)我們在父標(biāo)簽對和子標(biāo)簽對都添加樣式時,數(shù)據(jù)會以哪一個樣式呈現(xiàn)呢?經(jīng)過測試,會以離數(shù)據(jù)最近的 樣式呈現(xiàn),這也是符合我們的意愿的(好像也符合一句俗話:縣官不如現(xiàn)管)。這樣我們就可以通過改變樣式而改變數(shù)據(jù)在excel中呈現(xiàn)的方式(這些樣式規(guī)格 你可以在前臺頁面上添加也可以在后臺代碼里給相應(yīng)的控件如:DataGrid等添加這些樣式)。如果你的應(yīng)用比較簡單,那么這已經(jīng)足夠滿足你的需求。但如 果你的應(yīng)用比較復(fù)雜,那么你也可以采取一種方式來達(dá)到不同的數(shù)據(jù)呈現(xiàn)效果。下面,我就舉一個稍微復(fù)雜一點(diǎn)的應(yīng)用。 

    例如:你的數(shù)據(jù)要呈現(xiàn)給不同國家和地區(qū)的用戶查看,這樣數(shù)據(jù)的呈現(xiàn)的格式就會不一樣,那么我們怎么解決這個問題呢?當(dāng)然了,你可以手工把這些數(shù)據(jù)處理好,但這畢竟不是最好的方法,因為如果我們每增加一個其他國家或地區(qū)的用戶,那么我們就需要把所有的數(shù)據(jù)以客戶要求的格式處理一遍,當(dāng)數(shù)據(jù)量很大時,這無疑是一件很沉重且無聊的工作。那么我們究竟應(yīng)該怎樣解決類似這樣的問題呢?下面我說一下,我自己的看法:把這些格式化的信息抽取到一個xml文件中,程序運(yùn)行時根據(jù)不同的客戶讀取不同的格式化信息,然后把這些格式化信息動態(tài)的添加到我們的數(shù)據(jù)上,這樣,當(dāng)我們每增加一個其他國家或地區(qū)的用戶時,我們只需要多增加一個xml文件,把對應(yīng)的格式化信息寫入這個xml文件,然后當(dāng)這個國家或地區(qū)的用戶查看時,就把對應(yīng)的格式化信息讀取出來應(yīng)用到數(shù)據(jù)上即可。 

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

    excel常用的一些格式

    2010-11-17 13:13

    1) 文本:vnd.ms-excel.numberformat:@ 
    2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 
    3) 數(shù)字:vnd.ms-excel.numberformat:#,##0.00 
    4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00 
    5) 百分比:vnd.ms-excel.numberformat: #0.00%

    Excel導(dǎo)出及數(shù)據(jù)格式化處理(摘)

            public void ToExcel(System.Web.UI.Control ctl, string FileName)
            {
                 HttpContext.Current.Response.Charset = "UTF-8";
                 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
                 HttpContext.Current.Response.ContentType = "application/ms-excel";
                 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls");
                 ctl.Page.EnableViewState = false;
                 System.IO.StringWriter tw = new System.IO.StringWriter();
                 HtmlTextWriter hw = new HtmlTextWriter(tw);
                 ctl.RenderControl(hw);
                 HttpContext.Current.Response.Write(tw.ToString());
                 HttpContext.Current.Response.End();
             }
            public override void VerifyRenderingInServerForm(Control control)
            {
                //base.VerifyRenderingInServerForm(control);
             }
            protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    //e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//這里是將要導(dǎo)出到execl里的第一列格式化為字符類型。
                    //e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");//這里是格式化為貨幣類型。
                     e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
                    //1) 文本:vnd.ms-excel.numberformat:@
                    //2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
                    //3) 數(shù)字:vnd.ms-excel.numberformat:#,##0.00
                    //4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
                    //5) 百分比:vnd.ms-excel.numberformat: #0.00%
                 }
             }

     

    js 將table內(nèi)容導(dǎo)入Excel

    <%@ page c %>
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    function MakeExcel()
    {
     var i, j, n;
     try
     {
      var xls = new ActiveXObject("Excel.Application");
     }
     catch(e)
     { 
      alert( "要打印該表,您必須安裝Excel電子表格軟件,同時瀏覽器須使用“ActiveX 控件”,您的瀏覽器須允許執(zhí)行控件。請點(diǎn)擊【幫助】了解瀏覽器設(shè)置方法!");
      return "";
     }
     xls.visible =true; // 設(shè)置excel為可見
     var xlBook = xls.Workbooks.Add;
     var xlsheet = xlBook.Worksheets(1);

    <!--合并-->
    xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).mergecells=true;
    xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).value="發(fā)卡記錄";
    xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,3)).Interior.ColorIndex=5; // 設(shè)置底色為藍(lán)色
    // xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4; // 設(shè)置字體色
    // xlsheet.Rows(1). Interior .ColorIndex = 5 ;//設(shè)置底色為藍(lán)色 設(shè)置背景色 Rows(1).Font.ColorIndex=4

    <!--設(shè)置行高-->
    xlsheet.Rows(1).RowHeight = 25;
    <!--設(shè)置字體 ws.Range(ws.Cells(i0+1,j0), ws.Cells(i0+1,j1)).Font.Size = 13 -->
    xlsheet.Rows(1).Font.Size=14;
    <!--設(shè)置字體 設(shè)置選定區(qū)的字體 xlsheet.Range(xlsheet.Cells(i0,j0), ws.Cells(i0,j0)).Font.Name = "黑體" -->
    xlsheet.Rows(1).Font.Name="黑體";
    <!--設(shè)置列寬 xlsheet.Columns(2)=14;-->
    xlsheet.Columns("A:D").ColumnWidth =18;
    <!--設(shè)置顯示字符而不是數(shù)字-->
    xlsheet.Columns(2).NumberFormatLocal="@";
    xlsheet.Columns(7).NumberFormatLocal="@";
    //設(shè)置單元格內(nèi)容自動換行 range.WrapText = true ;
    //設(shè)置單元格內(nèi)容水平對齊方式 range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//設(shè)置單元格內(nèi)容豎直堆砌方式
    //range.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter
    //range.WrapText = true; xlsheet.Rows(3).WrapText=true 自動換行
    //設(shè)置標(biāo)題欄
    //xlsheet.Cells(2, 1).Value = "卡號";
    //xlsheet.Cells(2, 2).Value = "密碼";
    //xlsheet.Cells(2, 3).Value = "計費(fèi)方式";
    //xlsheet.Cells(2, 4).Value = "有效天數(shù)";
    //xlsheet.Cells(2, 5).Value = "金額";
    //xlsheet.Cells(2, 6).Value = "所屬服務(wù)項目";
    //xlsheet.Cells(2, 7).Value = "發(fā)卡時間";
    var oTable = document.all['fors:data'];
    var rowNum = oTable.rows.length;
    for(i = 1; i <= rowNum; i++)
    {
     for (j = 1; j <= 7; j++)
     {
      //html table類容寫到excel
      xlsheet.Cells(i + 1, j).Value = oTable.rows(i - 1).cells(j - 1).innerHTML;
     }
    }
    <!-- xlsheet.Range(xls.Cells(i+4,2),xls.Cells(rowNum,4)).Merge; -->
    // xlsheet.Range(xlsheet.Cells(i, 4), xlsheet.Cells(i-1, 6)).BorderAround , 4
    // for(mn=1,mn<=6;mn++) . xlsheet.Range(xlsheet.Cells(1, mn), xlsheet.Cells(i1, j)).Columns.AutoFit;
    xlsheet.Columns.AutoFit;
    xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(rowNum+1,7)).HorizontalAlignment =-4108;//居中
    xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(1,7)).VerticalAlignment =-4108;
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Font.Size=10;
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(3).Weight = 2; //設(shè)置左邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(4).Weight = 2;//設(shè)置右邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(1).Weight = 2;//設(shè)置頂邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(2).Weight = 2;//設(shè)置底邊距
    xls.UserControl = true; //很重要,不能省略,不然會出問題 意思是excel交由用戶控制
    xls=null;
    xlBook=null;
    xlsheet=null;
    }
    </script>
    </head>
    <body>

    <input type="button" name="fors:_id7" value="生成excel文件" onclick=MakeExcel() />

    <table id="fors:data" border="1" cellpadding="0" cellspacing="1" width="100%">
    <tr>
    <td>卡號</td>
    <td>密碼</td>
    <td>計費(fèi)方式</td>
    <td>有效天數(shù)</td>
    <td>金額</td>
    <td>所屬服務(wù)項目</td>
    <td>發(fā)卡時間</td>
    </tr>
    <tr>
    <td>h000010010</td>
    <td>543860</td>
    <td>計點(diǎn)</td>
    <td>1 </td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010011</td>
    <td>683352</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010012</td>
    <td>433215</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010013</td>
    <td>393899</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010014</td>
    <td>031736</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010015</td>
    <td>188600</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010016</td>
    <td>363407</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010017</td>
    <td>175315</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010018</td>
    <td>354437</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    <tr>
    <td>h000010019</td>
    <td>234750</td>
    <td>計點(diǎn)</td>
    <td>1</td>
    <td>2.0</td>
    <td>測試項目</td>
    <td>2006-06-23 10:14:40.843</td>
    </tr>
    </table>
    </body>
    </html>

    posted on 2012-08-30 15:57 科菱財神 閱讀(3975) 評論(2)  編輯  收藏 所屬分類: JavaScript

    評論

    # re: web導(dǎo)出excel數(shù)據(jù)格式化 2014-01-27 15:24 8y8

    斤斤計較  回復(fù)  更多評論   

    # re: web導(dǎo)出excel數(shù)據(jù)格式化[未登錄] 2016-07-20 15:54 111

    111  回復(fù)  更多評論   


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2012年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费中文字幕在线| 亚洲AV无码国产丝袜在线观看| 免费黄色小视频网站| 亚洲av无码成人影院一区| 亚洲性线免费观看视频成熟| 亚洲精品蜜夜内射| 亚洲中文字幕第一页在线| 韩国亚洲伊人久久综合影院| 成人免费毛片视频| 亚美影视免费在线观看| 亚洲一级在线观看| 亚洲视频免费一区| 国产v亚洲v天堂a无| 久久久久亚洲精品无码网址| 中文字幕免费在线看电影大全| 亚洲男同帅GAY片在线观看| 国产自国产自愉自愉免费24区| 夜夜春亚洲嫩草影院| 毛片免费观看的视频在线| 成人免费乱码大片A毛片| 亚洲色偷偷综合亚洲AV伊人蜜桃| 国产亚洲真人做受在线观看| 卡1卡2卡3卡4卡5免费视频| 99爱视频99爱在线观看免费| 亚洲国产精品成人综合色在线婷婷| 亚洲一区二区精品视频| 9久久免费国产精品特黄| 亚洲精品无码高潮喷水A片软| 日韩a级毛片免费观看| 男女男精品网站免费观看| 亚洲在成人网在线看| 国产亚洲婷婷香蕉久久精品| 又粗又硬免费毛片| 免费看又爽又黄禁片视频1000| 国产精品入口麻豆免费观看| 黄网站免费在线观看| 亚洲中文字幕无码久久2020| 精品亚洲aⅴ在线观看| 亚洲成色WWW久久网站| 一个人免费观看视频www| 久久久久久久99精品免费|