保存导出的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);
}
}
浏览器可以为用户提供"打开或保存"选项。这就是您的内容处理"附加"鼓励浏览器做的事情。你的另一个选择是内容处理"内联",浏览器通常会调用应用程序(在这种情况下是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();