2009-08-17 1 views
0

私は、ユーザーのDataGridビューにデータセットを表示したいアプリケーションを開発しています。ユーザーは、DataGridviewのデータをどのように私はそれを行うことができますか?excelでデータセットを保存して、ユーザーがクライアントマシンでダウンロードできるようにする

1)ファイルをダウンロードする前に、Excelでデータセットを書き込み、サーバーに保存する必要がありますか?

2)ハイパーリンクを使用して、サーバーに保存されているファイルのパスをハイパーリンクのhRefプロパティに設定して、ユーザーがファイルをクリックしてダウンロードできるようにすることはできますか?

私はC#ASP.net 2.0を使用しています。

助けてください!

答えて

1

次のコードを使用してサーバにファイルを保存する必要はありません、その場でファイルを作成します。

Public Shared Sub DataTableToExcel(ByVal dt As DataTable, ByVal FileName As String 
    HttpContext.Current.Response.Clear() 
    HttpContext.Current.Response.Write(Environment.NewLine) 
    For Each row As DataRow In dt.Rows 
    For i As Integer = 0 To dt.Columns.Count - 1 
     HttpContext.Current.Response.Write(row(i).ToString().Replace(";", String.Empty) + ";") 
    Next 

    HttpContext.Current.Response.Write(Environment.NewLine) 
    Next 

    HttpContext.Current.Response.ContentType = "application/ms-excel" 
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName + ".xls") 
    HttpContext.Current.Response.[End]() 
End Sub 
+0

を所有するには、CSV形式です。この形式は、上記のコードよりも少し難しいので、ちょっと見てみたいです。 –

1

あなたは

StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 

    string attachment = "attachment; filename=SummaryReport" + DateTime.Now.ToString() + ".xls"; 

    Response.ClearContent(); 
    Response.AddHeader("content-disposition", attachment); 
    Response.ContentType = "application/ms-excel"; 


    grd.RenderControl(htw); 

    Response.Write(sw.ToString()); 
    Response.End(); 
+0

.xlsはファイルをexcel形式で書きませんExcel – Jebli

+0

でファイルを開くと、このコードでファイルを保存することができます。plzはこのコードと一致します。 –

+0

私はそれが正常に動作している私のマシン上でそれをチェックしている。 –

1

意志を達成するために、この単純なコードを使用することができますそれをやる。

ASP.NET(C#とVB)サンプルhereが表示され、無料トライアルをダウンロードできます。

免責事項:私はあなたがここで示唆されているものをスプレッドシートギア社

関連する問題