C#MVC4:创建Word文档并下载,无需保存在磁盘中

C#MVC4:创建Word文档并下载,无需保存在磁盘中,c#,asp.net-mvc-4,c#-4.0,ms-word,C#,Asp.net Mvc 4,C# 4.0,Ms Word,这可能有一个非常简单的答案,但我就是找不到 我有一个使用C#MVC4和Microsoft.Office.Interop.Word 12的项目 在一个动作中,我尝试动态创建一个Word文件(使用数据库获取信息),然后我想下载它。该文件不存在(它是从头创建的),我不想将其保存在磁盘中(不需要保存,因为它的内容是动态的) 以下是目前的代码: public ActionResult Generar(Documento documento) { Application word = new App

这可能有一个非常简单的答案,但我就是找不到

我有一个使用C#MVC4和Microsoft.Office.Interop.Word 12的项目

在一个动作中,我尝试动态创建一个Word文件(使用数据库获取信息),然后我想下载它。该文件不存在(它是从头创建的),我不想将其保存在磁盘中(不需要保存,因为它的内容是动态的)

以下是目前的代码:

public ActionResult Generar(Documento documento)
{
    Application word = new Application();
    word.Visible = false;

    object miss = System.Reflection.Missing.Value;
    Document doc = word.Documents.Add(ref miss, ref miss, ref miss, ref miss);

    Paragraph par = doc.Content.Paragraphs.Add(ref miss);
    object style = "Heading 1";
    par.Range.set_Style(ref style);
    par.Range.Text = "This is a dummy test";

    byte[] bytes = null;  // This is the part i need to get the bytes of the doc object
    doc.Close();

    word.Quit();

    return File(bytes, "application/octet-stream", "NewFile.docx");
}

使用Robert Harvey推荐的库DocX.dll(谢谢,先生),这将是解决方案:

using Novacode;
using System.Drawing;

.
.
.

public ActionResult Generar(Documento documento)
{
    MemoryStream stream = new MemoryStream();
    DocX doc = DocX.Create(stream);

    Paragraph par = doc.InsertParagraph();
    par.Append("This is a dummy test").Font(new FontFamily("Times New Roman")).FontSize(32).Color(Color.Blue).Bold();

    doc.Save();

    return File(stream.ToArray(), "application/octet-stream", "FileName.docx");
}
我无法使用Microsoft.Office.Interop.Word找到解决方案(非常简单,我很失望)


再次感谢Robert,希望此示例能帮助您解决问题。

相反,请使用实现DOCX格式的各种C#库之一。您应该将其保存到磁盘上。Word是基于文件的,所以如果您只创建一个临时文件,您的生活将变得轻松得多。正如其他人提到的,Word并不是专门为这类事情设计的。你们中有谁有更好的解决方案吗?因为我想不出这种方法会出现什么样的问题,我仍然认为保存文件是不必要的。更好的解决方案是:检查此链接。它使用的是Microsoft.Office.InteropI。我也在寻找Microsoft.Office.Interop.Word解决方案来实现这一点:(