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

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

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

    pzxsheng

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

    web導出excel數據格式化

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


    當我們把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>
        <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>


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

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

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

    excel常用的一些格式

    2010-11-17 13:13

    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%

    Excel導出及數據格式化處理(摘)

            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:@");//這里是將要導出到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) 數字:vnd.ms-excel.numberformat:#,##0.00
                    //4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
                    //5) 百分比:vnd.ms-excel.numberformat: #0.00%
                 }
             }

     

    js 將table內容導入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 控件”,您的瀏覽器須允許執行控件。請點擊【幫助】了解瀏覽器設置方法!");
      return "";
     }
     xls.visible =true; // 設置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="發卡記錄";
    xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,3)).Interior.ColorIndex=5; // 設置底色為藍色
    // xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4; // 設置字體色
    // xlsheet.Rows(1). Interior .ColorIndex = 5 ;//設置底色為藍色 設置背景色 Rows(1).Font.ColorIndex=4

    <!--設置行高-->
    xlsheet.Rows(1).RowHeight = 25;
    <!--設置字體 ws.Range(ws.Cells(i0+1,j0), ws.Cells(i0+1,j1)).Font.Size = 13 -->
    xlsheet.Rows(1).Font.Size=14;
    <!--設置字體 設置選定區的字體 xlsheet.Range(xlsheet.Cells(i0,j0), ws.Cells(i0,j0)).Font.Name = "黑體" -->
    xlsheet.Rows(1).Font.Name="黑體";
    <!--設置列寬 xlsheet.Columns(2)=14;-->
    xlsheet.Columns("A:D").ColumnWidth =18;
    <!--設置顯示字符而不是數字-->
    xlsheet.Columns(2).NumberFormatLocal="@";
    xlsheet.Columns(7).NumberFormatLocal="@";
    //設置單元格內容自動換行 range.WrapText = true ;
    //設置單元格內容水平對齊方式 range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//設置單元格內容豎直堆砌方式
    //range.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter
    //range.WrapText = true; xlsheet.Rows(3).WrapText=true 自動換行
    //設置標題欄
    //xlsheet.Cells(2, 1).Value = "卡號";
    //xlsheet.Cells(2, 2).Value = "密碼";
    //xlsheet.Cells(2, 3).Value = "計費方式";
    //xlsheet.Cells(2, 4).Value = "有效天數";
    //xlsheet.Cells(2, 5).Value = "金額";
    //xlsheet.Cells(2, 6).Value = "所屬服務項目";
    //xlsheet.Cells(2, 7).Value = "發卡時間";
    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; //設置左邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(4).Weight = 2;//設置右邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(1).Weight = 2;//設置頂邊距
    xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(2).Weight = 2;//設置底邊距
    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>計費方式</td>
    <td>有效天數</td>
    <td>金額</td>
    <td>所屬服務項目</td>
    <td>發卡時間</td>
    </tr>
    <tr>
    <td>h000010010</td>
    <td>543860</td>
    <td>計點</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>計點</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>計點</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>計點</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>計點</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>計點</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>計點</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>計點</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>計點</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>計點</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導出excel數據格式化 2014-01-27 15:24 8y8

    斤斤計較  回復  更多評論   

    # re: web導出excel數據格式化[未登錄] 2016-07-20 15:54 111

    111  回復  更多評論   


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


    網站導航:
     

    導航

    <2016年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲精品欧洲在线观看| 亚洲宅男精品一区在线观看| 一级毛片免费一级直接观看| 国产成人免费A在线视频| 亚洲av纯肉无码精品动漫| 国产精品久久久久影院免费| 青草久久精品亚洲综合专区| 四虎影视精品永久免费| 有色视频在线观看免费高清在线直播 | 亚洲国产日韩a在线播放| 成人免费视频88| 亚洲av成人中文无码专区| 四虎永久在线免费观看| 一区二区三区免费电影| 久久精品国产亚洲麻豆| 99久久久国产精品免费牛牛四川| 亚洲成人黄色网址| 成年在线观看免费人视频草莓| 亚洲av色香蕉一区二区三区| 在线a亚洲v天堂网2018| 国产做国产爱免费视频| 久久久久亚洲AV无码专区首JN| 国产精品久久免费| 亚洲男人的天堂网站| 亚洲日本韩国在线| 男人的天堂网免费网站| 亚洲首页国产精品丝袜| 四虎影视在线永久免费观看| 99在线热播精品免费99热| 亚洲精品成人图区| 国产一级特黄高清免费大片| 中文在线日本免费永久18近| 亚洲免费人成视频观看| 免费永久在线观看黄网站| 麻豆精品不卡国产免费看| 亚洲色大成网站www| 在线亚洲人成电影网站色www| 国产精品爱啪在线线免费观看| 黄床大片30分钟免费看| 亚洲综合无码一区二区三区| 免费a级毛片无码av|