1

データテーブルをwordにエクスポートしましたが、ファイル名を渡すと、[開く/保存]ダイアログボックスでファイル名が取得されないようです。

これが私がしていることです

public static void Convertword(DataTable dt, HttpResponse Response,string filename)
{
    try
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".doc");
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
        System.Web.UI.WebControls.GridView dg = new System.Web.UI.WebControls.GridView();
        dg.DataSource = dt;
        dg.DataBind();
        dg.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }
    catch(Exception err)
    {
        throw err;
    }
}

ファイル名を渡す"report(" + System.DateTime.Now.ToString("dd/MM/yyyy"); + ")"と、値はdd / MM / YYYYではなく、ファイル名がdd_MM_YYYYと表示されます。

4

5 に答える 5

4

あなたのコードについてのいくつかのコメント:

  1. コンテンツタイプヘッダーをWord文書に設定していますが、実際にはGridViewをレンダリングしてHTMLコンテンツを送信しています。
  2. dd/MM/YYYY文字が原因で、は有効なファイル名ではありません/
  3. ステートメントで実行try/catchしているだけの場合は、ブロックは必要ありませんcatchthrow err
  4. 最後に電話Response.Endする必要はありません。
  5. usingストリームやリーダー/ライターなどの使い捨てオブジェクトを処理するときは、常にステートメントを使用してDispose、すべての場合にメソッドが呼び出されるようにします。
于 2009-12-29T10:10:35.437 に答える
2

次のようなファイル名を使用する必要があります

String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
于 2009-12-29T10:12:30.227 に答える
0

ファイル名に「/」を含めることはできません。

于 2009-12-29T10:11:37.777 に答える
0

これ/は、がファイル名の有効な文字ではないことが原因である可能性があります。あなたの名前は特定の基準を満たしている必要があります。

* . " / \ [ ] : ; | = ,

于 2009-12-29T10:11:41.470 に答える
0

ファイル名にスラッシュが含まれている場合、これによりファイルへのURLが破損し、ある時点でスラッシュが置き換えられると思いますか?

于 2009-12-29T10:11:56.713 に答える