0

このコードをローカル マシンの gridview からの Excel へのエクスポートとして使用しています.....

   void btn_excelClick()
{
 Response.ClearContent();
    Response.Buffer = true;


    Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "c.xls"));
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";

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



    GridView2.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
}

私の質問は次のとおりです。エンドユーザーがファイルをクリックしたときにファイルがサーバー側でダウンロードされ、ソースファイルのダウンロードリンクがポップアップするように、コードをどのように変更すればよいですか。

PS: 私のコンプは現在私のサーバーです...

4

2 に答える 2

1

次のことを行う必要があります。

1.)Web上のサーバーから1つのファイルをダウンロードできるようにするには、IIS上のすべてのユーザーと共有するフォルダーが必要です。

2.)共有フォルダ内のファイルに応答を書き込むだけです。

3.)ここで、ファイルをダウンロードするためのアクションが必要になります。このためには、Webページにハイパーリンクを配置し、hrefプロパティをファイルのWebの場所に設定するだけです。ユーザーがリンクをクリックするたびに、ファイルがそのユーザーのマシンにダウンロードされます。

PS WebURLは、サイトのURLとそれに続くフォルダーの場所を意味します。例:www.example.com/Folder1/Folder2/File1.xls

于 2012-12-03T09:02:54.937 に答える
0

出力を Response に書き込むのではなく、ファイルに書き込みます。

ファイルを書き込む場所へのパスが、IIS からアクセスできるディレクトリにあることを確認してください。

GridView2.RenderControl(htw);
var path = Server.MapPath("~/PublicFiles/FileName");
File.WriteAllText(path, sw.ToString());

これで、応答にファイルへのリンクを書き込んで、この新しく作成されたファイルへのパスを設定できます。

于 2012-12-03T08:53:45.403 に答える