ファイル名を付けて Word にエクスポートすると機能しないようです
-
21-09-2019 - |
質問
データテーブルを 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
解決
コードについていくつか注意事項があります:
- コンテンツ タイプ ヘッダーを Word ドキュメントに設定していますが、実際には GridView をレンダリングして HTML コンテンツを送信しています。
dd/MM/YYYY
は有効なファイル名ではありません。/
キャラクター。- 必要ありません
try/catch
の場合はブロックしますcatch
あなたがやってるだけの発言throw err
- 電話をかける
Response.End
最後は必要ありません。 - 常に使用する
using
ストリームやリーダー/ライターなどの使い捨てオブジェクトを扱うときは、ステートメントを使用して、Dispose
すべての場合にメソッドが呼び出されます。
他のヒント
は、
のようなファイル名を使用するようにすべきString.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
ファイル名が「することはできません/".
/
は、ファイル名の有効な文字ではないため、それは最も可能性が高いです。あなたの名前は
のいずれかを使用していないことを確認し、一定の基準を満たす必要があります
* . " / \ [ ] : ; | = ,
あなたは、ファイル名にスラッシュを持っている場合は、私はこれがファイルへのURLを壊すので、スラッシュがいくつかの点で置き換えられていることを前提としていますか?
所属していません StackOverflow