保存导出的doc文件到磁盘

本文关键字:文件 磁盘 doc 保存 | 更新日期: 2023-09-27 18:06:10

是否可以使用Response.Write()保存导出的word文档文件?现在它显示保存/打开对话框,一旦转换成功。但是我需要把这个文件保存到一个文件夹里。请帮我解决这个问题。

我到Doc代码的转换附在下面。

  private void ExportDataSetToWordDoc()
    {
        try
        {
            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", DateTime.Today.ToShortDateString().Replace("/", "").Replace("-", "") + "_" + DateTime.Now.ToShortDateString() + ".doc"));
            Response.ContentType = "application/ms-word";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            tblMain.RenderControl(htw);

            Response.Write(sw.ToString());
            Response.End();
        }
        catch (ThreadAbortException ex)
        {
            Common.LogError(ex);
        }
    }

保存导出的doc文件到磁盘

浏览器可以为用户提供"打开或保存"选项。这就是您的内容处理"附加"鼓励浏览器做的事情。你的另一个选择是内容处理"内联",浏览器通常会调用应用程序(在这种情况下是Word)来打开文件。看到MSDN。

遗憾的是,浏览器并不总是提供你在"另存为"对话框中指定的默认文件名。通常它会提供你的网页名称作为默认值。Firefox至少将此记录为一个bug,而IE似乎认为这是一个"特性"。

我已经修改了我的代码如下所示。现在正在保存指定的文件夹

Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", DateTime.Today.ToShortDateString().Replace("/", "").Replace("-", "") + "_" + DateTime.Now.ToShortDateString() + ".doc"));
            Response.ContentType = "application/ms-word";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            tblMain.RenderControl(htw);
            string strPath = Request.PhysicalApplicationPath + "Test.doc";
            StreamWriter sWriter = new StreamWriter(strPath);
            sWriter.Write(sw.ToString());
            sWriter.Close();

谢谢。

您可以使用路径来使用流写入器(System.IO.StreamWriter)。当流写入器关闭时,文件将被保存在指定的路径上。

但是,它将保存在服务器磁盘上。如果您想在客户端保存文件,那么除了询问用户将文件放在哪里之外,您别无选择。未经客户端批准,您不能在客户端上保存文件。

var x = new System.IO.StreamWriter(path);
x.Close();