0

ASP.NET C# で Respose.Write を使用して Excel ファイルを作成しています。ユーザーは作成したファイルをシステムに保存できますが、ユーザーが何も知らずにこの Excel ファイルをサーバーに保存したいと考えています。どのように可能ですか?これが私のExcelファイルの作成方法です:

        Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=" + "res" + ".xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";

....

    Response.Write("</table>");
    Response.Flush();
    Response.End();

このコードは作成したExcelファイルをクライアントPCに保存するのですが、作成したファイルをサーバーに保存したい

4

1 に答える 1

2

一般的な考え方は、Excel ファイルの内容をバッファーに書き込むことです。次に、a) ファイルに保存し、b) クライアントにストリーミングします。サーバー上で一意のファイル命名規則を使用する必要があります (たとえば、タイム スタンプを含めます)。IIS アプリケーション プールには、ファイルの保存先フォルダーに対する書き込み権限も必要です。

StringBuilder excel = new StringBuilder();
excel.Append("<table>");
...
excel.Append("</table>");

// save to file
File.WriteAllText("C:\\blah.xls", excel.ToString());

// output to response
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=" + "res" + ".xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Response.Write(excel.ToString());
Response.End();
于 2012-12-07T08:05:48.617 に答える