我将数据表导出为单词,当我传递文件名时,它似乎没有在打开/保存对话框中获取文件名。
这就是我正在做的事情
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
答案 0 :(得分:4)
关于您的代码的几点评论:
dd/MM/YYYY
字符,/
不是有效的文件名。try/catch
声明catch
throw err
阻止
Response.End
。using
语句,以确保在所有情况下都调用Dispose
方法。答案 1 :(得分:2)
你应该使用像
这样的文件名String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
答案 2 :(得分:0)
文件名不能有“/".
答案 3 :(得分:0)
这很可能是因为/
不是文件名的有效字符。您的名字必须符合某些标准,请务必不要使用任何
* . " / \ [ ] : ; | = ,
答案 4 :(得分:0)
如果文件名中有正斜杠,我会认为这会破坏文件的URL,因此斜杠会在某个时候被替换掉?