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

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

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

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

2.添加控制器及方法

 public class DownloadController : Controller
{
// GET: Download
public ActionResult Index()
{
return View();
}
/// <summary>
/// 下载Word
/// </summary>
/// <returns></returns>
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 = "";
sectPr.pgMar.top = "";
sectPr.pgMar.left = ;
sectPr.pgMar.right = ;
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 = ;
runTitle.SetFontFamily("仿宋", FontCharRange.None);// 字体设置 XWPFParagraph p2 = m_Docx.CreateParagraph();
// 段落格式居中
p2.Alignment = ParagraphAlignment.CENTER;
XWPFRun runTitle2 = p2.CreateRun();
runTitle2.FontSize = ; XWPFParagraph p3 = m_Docx.CreateParagraph();
p3.Alignment = ParagraphAlignment.LEFT;
XWPFRun runTitle3 = p3.CreateRun();
runTitle3.IsBold = false;
runTitle3.SetText("这里可以写我们文档中的内容,比如数据库中的数据之类的。");
runTitle3.FontSize = ;
runTitle3.SetFontFamily("仿宋", FontCharRange.None);//设置雅黑字体 XWPFParagraph p5 = m_Docx.CreateParagraph();
p5.Alignment = ParagraphAlignment.RIGHT;
XWPFRun runTitle5 = p5.CreateRun();
runTitle5.SetText("正所谓死道友莫死贫道");
runTitle5.FontSize = ;
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;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<form method="post" action="/Download/ExportWord" target="_blank">
<input type="submit" value="下载Word" />
</form>
</div>
</body>
</html>

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

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

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

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

.Net MVC+NPOI实现下载自定义的Word文档的更多相关文章

  1. C# WebForm 使用NPOI 2 生成简单的word文档(.docx)

    使用NPOI可以方便的实现服务端对Word.Excel的读写.要实现对Word的读写操作,需要引用NPOI.OOXML.dll,应用命名空间XWPF. 本文使用NPOI 2.0实现对Word的基本生成 ...

  2. C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1

    Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,

  3. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...

  4. Java 使用新方法打印Word文档

    前言 我曾写过一篇文章,它主要介绍了如何通过物理打印机和虚拟打印机来打印Word文档.今天这篇教程将介绍一种新的方法来实现对Word文档的打印. 此次使用到的类库仍然是Spire.Doc for Ja ...

  5. word文档快速转换为PPT演示文稿

    方法一: 访问http://t.im/pdftoppt,点击继续浏览(会跳转至:https://smallpdf.com/cn/pdf-to-ppt): 打开word文档,设置为“横向”,输出为PDF ...

  6. 将html转换为word文档的几种方式

    1 基于wps直接将页面信息下载成word文档 public void test() { WPS.Application wps = null; try { wps = new WPS.Applica ...

  7. java 使用poi读取word文档存入数据库

    使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...

  8. ASP.NET MVC 拓展ViewResult实现word文档下载

      最近项目中有同事用到word文档导出功能,遇到了一些导出失败问题,帮其看了下解决问题的同事,看了下之前的代码发现几个问题: 代码编写不规范,word导出功能未收口 重复代码导出都是 实现逻辑比较复 ...

  9. 利用NPOI生成word文档(c#)

    WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...

随机推荐

  1. error: src refspec XXX matches more than one

    error: dst refspec v1. matches more than one. error: failed to push some refs to '' 错误原因是 branch名和ta ...

  2. Android 打造编译时注解解析框架 这只是一个开始

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43452969 ,本文出自:[张鸿洋的博客] 1.概述 记得很久以前,写过几篇博客 ...

  3. (一)Servlet简介

    相关名词解释 HTML:Hyper Text Markup Language,超文本标记语言 HTTP:Hyper Text Transfer Protocol,超文本传输协议 URL:Uniform ...

  4. testng增加失败重跑机制

    注: 以下内容引自 http://www.yeetrack.com/?p=1015 testng增加失败重跑机制 Posted on 2014 年 10 月 31 日 使用Testng框架搭建自动测试 ...

  5. BZOJ_4325_NOIP2015 斗地主_DFS

    BZOJ_4325_NOIP2015 斗地主_DFS Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游 ...

  6. BZOJ_4517_[Sdoi2016]排列计数_组合数学

    BZOJ_4517_[Sdoi2016]排列计数_组合数学 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[ ...

  7. VMware workstation的基础使用

    1. VMware workstation虚拟化平台简介2. VMware workstation提供网络资源3. VMware workstation提供存储资源4. VMware workstat ...

  8. Django 基础二(View和urls)

    上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...

  9. appium----【已解决】【Mac】环境配置提示“Xcode Command Line Tools are NOT installed!"

    报错问题提示截图如下: 报错原因 :根据给出的信息很明显可以看到是"Xcode Command Line Tools"此工具没有安装 解决措施: 打开终端直接执行:xcode-se ...

  10. 计算机17-3,4作业E

    E.complete number Description 完数是指一个整数的因子和等于这个数本身,例如6=1+2+3,所以6是一个完数. 按照给定数据范围,找出期中所有完数并输出. Input 数据 ...