熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

asp.net導出Excel方法總結

2013-11-15 12:48:59  來源: ASP編程 
    一這種方法是把 DataSet的DataTable裡面的數據拼接成html的<table></table>形式輸出
   
    缺點)這是一種偽Excel格式用Excel打開的時候會提示 格式與文件擴展名格式不一致 每次都要手動確定打開
   
    ()這樣一個一個的循環效率低
   
    優點直接從浏覽器輸出用戶可以選擇保存路徑
   
    View Code
   
    public string GetExportString(DataSet ds)
   
    {
   
    StringBuilder data = new StringBuilder()//因為循環很多用 StringBuilder速度會快很多
   
    //data = dsDataSetName + \n;
   
    foreach (DataTable tb in dsTables)//多個表
   
    {
   
    //data += tbTableName + \n;
   
    dataAppend(<table cellspacing=\\ cellpadding=\\ rules=\all\ border=\\>
   
    //寫出列名
   
    dataAppend(<tr style=\fontweight: bold; whitespace: nowrap;\>
   
    foreach (DataColumn column in tbColumns)
   
    {
   
    dataAppend(<td>
   
    dataAppend(columnColumnName)
   
    dataAppend(</td>
   
    }
   
    dataAppend(</tr>
   
    //寫出數據
   
    foreach (DataRow row in tbRows)
   
    {
   
    dataAppend(<tr>
   
    foreach (DataColumn column in tbColumns)
   
    {
   
    //if (columnColumnNameEquals(證件編號) || columnColumnNameEquals(報名編號))
   
    //    dataAppend(<td style=\vndmsexcelnumberformat:@\> + row[column]ToString() + </td>
   
    //else
   
    dataAppend(<td>
   
    dataAppend(row[column]ToString())
   
    dataAppend(</td>
   
    }
   
    dataAppend(</tr>
   
    }
   
    dataAppend(</table>
   
    }
   
    return dataToString()
   
    }
   
    public void ExportDsToXls(Page page string fileName DataSet ds)
   
    {
   
    pageResponseClear()
   
    pageResponseBuffer = true;
   
    pageResponseCharset = GB;
   
    //pageResponseCharset = UTF;<BR>     //如果輸出中文名亂碼的話可以這樣編碼 文件名  HttpUtilityUrlEncode(fileName SystemTextEncodingUTF
   


    pageResponseAppendHeader(ContentDisposition attachment;filename= + fileName + SystemDateTimeNowToString(_yyMMdd_hhmm) + xls
   
    pageResponseContentEncoding = SystemTextEncodingGetEncoding(GB//設置輸出流為簡體中文
   
    pageResponseContentType = application/msexcel;//設置輸出文件類型為excel文件
   
    pageEnableViewState = false;
   
    pageResponseWrite(GetExportString(ds))
   
    pageResponseEnd()
   
    }
   
    // 可以去除自動科學計數法的困擾
   
    //輸出為Table能夠最大限度的減少字段中數據對生成的文件格式的影響在這裡我沒有處理數據中含有HTML標簽的情況 在頁面後台中這樣使用就可以了
   
    二用到 MicrosoftOfficeInteropExcel dll在服務器輸出輸出的Excel在服務器(如果是b/s架構的話還要想著怎麼把這個導出的文件拿回來)而且如果出現異常或者中斷的話在服務器上面有很多excel的進程需要手動去關閉要不過不了多久服務器就掛掉了所以這個方法比較適合用在WinForm的開發不適合用在web的


From:http://tw.wingwit.com/Article/program/ASP/201311/21685.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.