直接下载新创建的word文件,而不是保存到磁盘

本文关键字:文件 磁盘 保存 word 新创建 下载 创建 | 更新日期: 2023-09-27 18:17:57

我正在使用互操作创建一个word文件,它工作良好。目前,我正在传递一个文件路径,以创建新的文件后,找到并替换里面的任何变量。理想情况下,我希望它一旦创建文件自动服务/通过浏览器下载文件,而不是在服务器硬盘上留下任何东西。这可能吗?这是我用来创建文件的代码;

  public static void CreateWordDoc(List<objReplace> lstReplace, String TemplateFile, String OutputPath)
    {
        var app = new Microsoft.Office.Interop.Word.Application();
        var doc = app.Documents.Open(TemplateFile);
        var range = doc.Range();
        foreach (var ro in lstReplace)
        {
            range.Find.Execute(FindText: ro.Find, Replace: Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll, ReplaceWith: ro.Replace);
            var shapes = doc.Shapes;
            foreach (Microsoft.Office.Interop.Word.Shape shape in shapes)
            {
                var initialText = shape.TextFrame.TextRange.Text;
                var resultingText = initialText.Replace(ro.Find, ro.Replace);
                shape.TextFrame.TextRange.Text = resultingText;
            }
        }
        doc.SaveAs2(OutputPath);
        doc.Close();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
    }

直接下载新创建的word文件,而不是保存到磁盘

看起来您正在服务器(ASP.NET?)上自动化Word。

微软目前不推荐,不支持,微软办公自动化应用程序从任何无人值守,交互的客户机应用程序或组件(包括ASP, ASP。. NET、DCOM和NT服务),因为在这种环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁。

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用那些对于无人值守执行是安全的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果从服务器端解决方案使用Office应用程序,则该应用程序将缺乏成功运行所需的许多功能。此外,您将在整个解决方案的稳定性方面承担风险。请参阅Office服务器端自动化的注意事项一文了解更多信息。

您可以考虑使用Open XML SDK来处理Open XML文档,有关更多信息,请参阅欢迎使用Open XML SDK 2.5 for Office。或者只是使用为服务器端执行而设计的任何第三方组件。