热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NetMVC+NPOI实现下载自定义的Word文档

我们浏览很多网站时都会看到下载文件的功能(图片、word文档等),好巧不巧的是贫道近日也遇到了这个问题,于是写一篇博客记录一下。技术点:MVC、NPOI、Form表单。具体如何实现,待贫道喝一

我们浏览很多网站时都会看到下载文件的功能(图片、word文档等),好巧不巧的是贫道近日也遇到了这个问题,于是写一篇博客记录一下。

技术点:MVC、NPOI、Form表单。

具体如何实现,待贫道喝一口水慢慢道来。

 

1. 引入NPOI的Nuget包,这个相信道友们都不陌生。

 

 

2.添加控制器及方法

 public class DownloadController : Controller
    {
        // GET: Download
        public ActionResult Index()
        {
            return View();
        }
        /// 
        /// 下载Word
        /// 
        /// 
        public ActionResult ExportWord()
        {
            return View();
        }
    }

 

3.修改ExportWord方法

public ActionResult ExportWord()
        {
            // 创建流
            MemoryStream ms = new MemoryStream();
            // 创建文档对象
            XWPFDocument m_Docx = new XWPFDocument();

            // 设置页边距
            CT_SectPr sectPr = new CT_SectPr();
            sectPr.pgMar = new CT_PageMar();
            sectPr.pgMar.bottom = "1443";
            sectPr.pgMar.top = "1443";
            sectPr.pgMar.left = 1801;
            sectPr.pgMar.right = 1801;
            m_Docx.Document.body.sectPr = sectPr;

            //创建段落
            XWPFParagraph p1 = m_Docx.CreateParagraph();
            p1.Alignment = ParagraphAlignment.CENTER;
            // 该段落的文字以及样式
            XWPFRun runTitle = p1.CreateRun();
            runTitle.IsBold = true;
            runTitle.SetText("下载Word");
            runTitle.FontSize = 18;
            runTitle.SetFontFamily("仿宋", FontCharRange.None);// 字体设置

            XWPFParagraph p2 = m_Docx.CreateParagraph();
            // 段落格式居中
            p2.Alignment = ParagraphAlignment.CENTER;
            XWPFRun runTitle2 = p2.CreateRun();
            runTitle2.FontSize = 18;

            XWPFParagraph p3 = m_Docx.CreateParagraph();
            p3.Alignment = ParagraphAlignment.LEFT;
            XWPFRun runTitle3 = p3.CreateRun();
            runTitle3.IsBold = false;
            runTitle3.SetText("这里可以写我们文档中的内容,比如数据库中的数据之类的。");
            runTitle3.FontSize = 16;
            runTitle3.SetFontFamily("仿宋", FontCharRange.None);//设置雅黑字体

            XWPFParagraph p5 = m_Docx.CreateParagraph();
            p5.Alignment = ParagraphAlignment.RIGHT;
            XWPFRun runTitle5 = p5.CreateRun();
            runTitle5.SetText("正所谓死道友莫死贫道");
            runTitle5.FontSize = 16;
            runTitle5.SetFontFamily("仿宋", FontCharRange.None);

            // 将创建好的文档对象写入流
            m_Docx.Write(ms);
            ms.Flush();
            // 将流内容写入字节数据
            byte[] data = ms.ToArray();
            // 指定文件内容,类型以及文件名并返回
            return File(data, "application/octet-stream", "自定义Word.docx");
        }

4.创建下载页面

   现在后台方法有了,我们还需要一个页面来触发这个方法。创建控制器的时候有一个默认的Index方法,贫道在这里就用它了。

 

添加完视图之后,修改里面的代码,创建一个表单,一个sumbit按钮,嗯。贫道就用这提交表单的方式来触发ExportWord方法。

@{
    Layout = null;
}





    "viewport" cOntent=" />
    


    
"post" action="/Download/ExportWord" target="_blank"> "submit" value="下载Word" />

打开页面之后就是这个样子,虽然有点Low。。。但是贫道只是起了一个演示作用,就无所谓了。

点一下,处罚后台的方法,然后下载文件。 浏览器底部已显示下载完成。

 

 

打开这个Word 看看内容是不是和我们在后台写一样

 

完美收功!最后放一张gif。

 


推荐阅读
author-avatar
海淀区小张_703
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有