在服务器上创建Word文档并将客户端作为下载提供

时间:2012-12-18 06:44:37

标签: vb.net ms-word

我正在创建一个Word文档,如:

    Dim oApp As Word.Application
    Dim oDoc As Word.Document

    oApp = CreateObject("Word.Application")


    oDoc = oApp.Documents.Add


    Dim rng As Word.Range = oDoc.Range(0, 0)
    rng.Font.Name = "Verdana"
    rng.Font.Size = 16


    .......
    ...............



    oApp.Visible = True

    oDoc = Nothing
    oApp = Nothing

这在我的本地机器上运行良好。但是,如果我将我的代码放在Web服务器上,它当然不起作用。

我的问题是:我必须做什么,Word文档在服务器上创建,并将创建的文档作为下载提供给客户端。

有人可以帮我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你现在这样做的方式需要在服务器上出现Microsoft Word(或至少是Interop组件)以允许这样做。

或许更好的方法是动态创建PDF并将其提供给客户端

或许this方法可行或this

编辑:

另请参阅how-to-generate-word-documentdoc-docx-in-asp-net

编辑:

此代码段允许您将文件流式传输到客户端

using (MemoryStream mem = new MemoryStream())
        {
            // Create Document
            using (<declare document>))
            {
               //create your document here


                // Stream it down to the browser

            Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            Response.AppendHeader("Content-Disposition", "attachment;filename=HelloWorld.docx");
            mem.Position = 0;
            mem.CopyTo(Response.OutputStream);
            Response.Flush();
            Response.End();
            }

        }

答案 1 :(得分:-1)

刚看到这个......

我设法让Word在服务器上运行(Apache)。您必须在可以运行Word的用户帐户下运行Apache。此外,如果您使用Office 32位,则必须运行Apache 32位。一次只运行一个Word实例。但是,Word可以同时打开多个文档。我开发了一个插件,我放在Word的启动目录中,因此它可用于每个文档。在AutoExec宏中,我触发读取作业队列并生成文档的代码。所有这些都是使用AJAX和PHP从Web运行的。