2010-04-02 121 views
0

我有一個SQL查詢與SQL datareader。我爲數據讀取器提供了一個for循環。現在當數據開始從查詢中輸入時,我希望它在for循環中導出爲ex​​cel。 這裏是我的代碼從sql datareader導出到excel從vb.net

嘗試 昏暗SqlStr的String = 「」,博士爲SqlDataReader的=無

 ConnectDB(Cnn) 
     Str = "query" 
     SqlCmd = New SqlCommand(Str, Cnn) 
     dr = SqlCmd.ExecuteReader 

while dr.read 
..EXPORT TO EXCEL 
do 
end while 

沒有人知道如何做到這一點?

回答

0

此示例將呈現整個網格內容到Excel文件。

private void _Click(object sender, System.EventArgs e) 
{ 
//export to excel 
Response.Clear(); 
    Response.Buffer= true; 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.Charset = ""; 
    this.EnableViewState = false; 
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = 
     new System.Web.UI.HtmlTextWriter(oStringWriter); 
    this.ClearControls(dg); 
    dg.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString()); 
    Response.End(); 
} 
1

有許多方法可以使用

  1. 決定,如果你要創建一個可以參考的服務器上的文件在超鏈接

  2. 實時響應客戶端流,設置MIME類型,以便在Excel中加載響應。

對於任何一種方法,您都需要創建Excel將打開的輸出。這裏有一些選項:

  1. 您可以使用電子表格xml。這是Excel可以打開的舊版本的xml格式。
  2. 您可以將html寫入文件,並使用.xls擴展名/寫入html將其重命名爲響應流,並將MIME類型設置爲excel。
  3. 使用OOXML創建一個xlsx文件。此文件可以從Office 2000以後的所有版本的Excel中打開(客戶端可能需要下載免費更新以啓用此功能)。 OOXML非常複雜,所以我建議使用免費的庫,如Simple OOXML。您也可以從該鏈接下載OOXML SDK。

有關將xlsl文檔寫入響應流的信息,請參閱我的博文here