通过asp mvc 1.0创建msword文档

时间:2011-05-02 04:53:15

标签: asp.net-mvc ms-word

斐伊川    我使用的是asp.net MVC1.0。我想通过我使用函数的代码创建Ms word文档:

public ActionResult GetPostOffline(string PostId)

{
    Post post = new Post();
    post = PostBLL.PostDetails(new Guid(PostId.Replace("'","")));
    string strBody =  post.Title +post.Body;
    string filename = post.Title + ".doc";
    Response.ContentType = "application/word";
    Response.AppendHeader("Content-disposition", "attachment; filename=" + filename);
    Response.Write(strBody);
    return View("~/Views/Posts/AllPosts.aspx");
}

正确打开word文档,但在该文档中没有显示正确的内容。而不是显示内容它显示我的网站的HTML ..我该怎么办...请帮助我

2 个答案:

答案 0 :(得分:0)

试试这样:

public ActionResult GetPostOffline(string postId)
{
    Post post = new Post();
    post = PostBLL.PostDetails(new Guid(PostId.Replace("'","")));
    string strBody =  post.Title + post.Body;
    string filename = post.Title + ".txt";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename);
    return File(Encoding.UTF8.GetBytes(strBody), "text/plain");
}

我已将内容类型从application/word修改为text/plain,因为您拥有的是一个简单的sting变量(strBody),而不是实际的Word文档。要创建MSWord文档,您需要一些库。

答案 1 :(得分:0)

我相信有一个更简单的解决方案。从您的问题来看,您似乎希望文件以单词形式打开,即使它只是纯文本。这是我的解决方案:

{
    Post post = new Post();
    post = PostBLL.PostDetails(new Guid(PostId.Replace("'","")));
    string strBody =  "<body>" + post.Title + System.Environment.NewLine + post.Body + "</body>";
    string filename = post.Title + ".doc";
    return File(Encoding.UTF8.GetBytes(strBody), "application/word", filename);
}

我在标题和正文之间添加了System.Environment.NewLine。不确定是否有必要。