我出口数据表给字,当我传递了一个文件命名它似乎没有得到该文件中的名称开放/省对话框。

这里是我在做什么

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

有帮助吗?

解决方案

几点关于你的码:

  1. 你是设定的内容类型的头一个字文件,但你实际发送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