2012年2月20日 星期一

C# & VB 程式碼互轉功能網站


下面網址有提供C#與VB互轉的功能,希望可以一勞永逸解決您的問題..

這網站真是不錯啊. 能幫上我這呆呆的人

Gridview 轉成excel

好久沒寫程式了. 開始斷斷續續的練功中.
昨天為了找一個excel匯出的東西. 試了一下, 一直有問題.
1.先參考下面的程式   
引用 網綕
http://www.wretch.cc/blog/genius0207/9646786




1.
好久沒寫電腦相關的東西了...../__\

ASP.Net匯出Excel檔        

1.新增按鈕,連點二下後進入.cs檔(程式碼)

2.在_click事件中貼上程式碼
       
private void btnProduceExcel_Click(object sender, System.EventArgs e)
 {        
        //產生的時間
        string ProduceTime = System.DateTime.Now.ToString("yyyy-MM-dd_HHmm");
        //從緩衝區清除所有內容輸出
        Response.Clear();
        
        //可以引入二個參數:("要加入 value 的 HTTP 標頭的名稱"," 要加入至標頭的字串"),也就是excel的檔名  
        Response.AddHeader("content-disposition", "attachment;filename=" + "" + ProduceTime + ".xls");
                         
        //設定輸出資料流的 HTTP MIME 類型
        Response.ContentType = "application/vnd.ms-excel";

        //取得或設定輸出資料流的 HTTP 字元集,輸出的excel出現亂碼時,可設定成"big5"
        Response.Charset = "";
        System.IO.StringWriter sw = new System.IO.StringWriter(); //宣告一個來裝文字(應該是喔~~)
        //宣告htw --> 將標記字元及文字寫入 ASP.NET 伺服器控制項輸出的資料流     
        System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
           
        //新增一行標題  (將資料寫入 HtmlTextWriter 輸出資料流,後面接著行結束字元字串)        
        htw.WriteLine("excel內容---表格標題)");
         
        // dgInput是我在.aspx設置的一個datagrid 
        //將DataTable dtinput送給CreateTotalTable()接收資料庫資料後,指定給dginput 
        dgInput.DataSource = CreateTotalTable(dtInput);                      
         
        // dgInput為格式+資料,將 dgInput寫入htw裡。 (.RenderControl()-->將伺服器控制項內容輸出到提供的 HtmlTextWriter 物件)                  
        dgInput.RenderControl(htw);                      

        Response.Write(sw.ToString().Replace("
", "").Replace("
",""));//將資訊寫入 HTTP 回應輸出資料流。
        Response.End();//將目前所有受緩衝的輸出傳送到用戶端、停止網頁的執行,並引發 EndRequest 事件。 
}

找不到當初參考的頁面了QQ


2.出現  解決GridView使用RenderControl取得HTML出現的問題
  
又只好參考這個網頁. 就先解決了我寫程式的問題. 有時快和彈性.會被需求而忽略
http://www.dotblogs.com.tw/topcat/archive/2008/03/14/1336.aspx

如果想在CodeFile中取得GridView結果的HTML內容,首先會遇到這樣的錯誤訊息:
型別 'GridView' 的控制項 'GridView1' 必須置於有 runat=server 的表單標記之中。
這個問題,可以在您的CodeFile中加入以下這段來解決
    Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
        '處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中
    End Sub
如果您的GridView沒有設定分頁,應該就可以正常的執行了。但是如果有設定分頁,很快的又遇到了另外一個問題!出現以下的錯誤訊息:
RegisterForEventValidation 只能在 Render(); 期間呼叫
這個問題,可以設定aspx原始檔中<%Page%>的以下兩個設定解決
EnableEventValidation = "false" AutoEventWireup="true"

這樣的應用可以用再需要把資料庫的資料透過EMail寄送給使用者,如果自己組HTML語法是很累人的事情,可以透過這個方式,使用GridView產生HTML然後透過Email寄出
關於如何寄送EMail請參考以下這篇: