ファイル名を付けて Word にエクスポートすると機能しないようです

StackOverflow https://stackoverflow.com/questions/1973843

質問

データテーブルを 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"); + ")" 値を次のように取りません YYYY/MM/DD 代わりに、ファイル名が次のように表示されます dd_MM_YYYY

役に立ちましたか?

解決

コードについていくつか注意事項があります:

  1. コンテンツ タイプ ヘッダーを Word ドキュメントに設定していますが、実際には GridView をレンダリングして HTML コンテンツを送信しています。
  2. dd/MM/YYYY は有効なファイル名ではありません。 / キャラクター。
  3. 必要ありません try/catch の場合はブロックします catch あなたがやってるだけの発言 throw err
  4. 電話をかける Response.End 最後は必要ありません。
  5. 常に使用する using ストリームやリーダー/ライターなどの使い捨てオブジェクトを扱うときは、ステートメントを使用して、 Dispose すべての場合にメソッドが呼び出されます。

他のヒント

は、

のようなファイル名を使用するようにすべき
String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);

ファイル名が「することはできません/".

/は、ファイル名の有効な文字ではないため、それは最も可能性が高いです。あなたの名前は

のいずれかを使用していないことを確認し、一定の基準を満たす必要があります
  

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

あなたは、ファイル名にスラッシュを持っている場合は、私はこれがファイルへのURLを壊すので、スラッシュがいくつかの点で置き換えられていることを前提としていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top