0

リストビューをエクスポートしようとしていますが、表示されているリストビューだけでなく、sqldatasource の内容全体をエクスポートしたいと考えています。クエリは 20 列を返しますが、リストビューには小さなセット (5) のみが表示されます。20 列全体を Excel ファイルにエクスポートする方法はありますか?

私はこれまでのところこれを持っています:

protected void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment;filename=SearchResults.xls");
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    this.EnableViewState = false;
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);

    //I want to chagne this:
    this.ResultsListView.RenderControl(htmlTextWriter);

    Response.Write(stringWriter.ToString());
    Response.End();
 }

この行の代わりに:

    this.ResultsListView.RenderControl(htmlTextWriter);

私は次のようなことをしたいと思います:

    this.sqldatasource.RenderControl(htmlTextWriter);

しかし、明らかに SqlDataSource には RenderControl メソッドがありません。これについてきれいな方法はありますか?

4

2 に答える 2

2

SqlDataSource によって返された DataView から DataTable を作成し、それを Excel にエクスポートできます。結果の DataTable には、すべての列が含まれます。

例:

DataTable dt = ((DataView) this.sqldatasource.Select(DataSourceSelectArguments.Empty)).ToTable();

この DataTable を取得してエクスポートします。Google は DataTable を Excel にエクスポートします。

サードパーティのライブラリを使用しても問題ない場合は、EPPLUSを調べてください。文字通り 2 行のコードで DataTable を Excel にエクスポートできます。残りは、ヘッダーを設定してレスポンスをフラッシュするコードです。

例を次に示します: http://epplus.codeplex.com/wikipage?title=WebapplicationExample

于 2013-05-23T20:55:21.790 に答える