我们浏览很多网站时都会看到下载文件的功能(图片、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. sql server 高可用故障转移(6)

    创建分布式事务处理DTC群集服务 在hsr3 ip 49上继续 \ 输入一个没有冲突的ip地址用作SQL-CL的DTC解析地址:192.168.2.110,通过检测后会在DNS服务器中自动创建一条记录 ...

  2. tkinter中表格的建立(十三)

    表格的建立 import tkinter from tkinter import ttk wuya = tkinter.Tk() wuya.title("wuya") wuya.g ...

  3. web安全-XSS攻击及防御

    XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...

  4. 深入浅出javascript学习笔记

    弱类型的隐式转换: 32 + 32 // 64 "32" + 32 // "3232" "32" – 32 // 0 巧用+/-规则转换类型 ...

  5. Python web简约表白网页源码分享,时光不老,我们不散!

    演示站:c.lmz8.cn打开js/4.js,复制到工具箱的js代码整理那,先解密,方便查看.工具箱:tool.lmz8.cnjs代码整理.在线解码 这个便是文字,只不过呗转码了,所以要用到解码工具. ...

  6. intelij IDEA破解

    破解intelij IDEA请见链接:https://blog.csdn.net/weixin_37937646/article/details/79119540

  7. 开发你的第一个BLE应用程序—Blinky

    本文将和大家一起编写我们的第一个BLE应用程序:Blinky(闪灯程序),哪怕你之前没有任何BLE开发经验,也不用担心,只要跟着文中所述步骤,你就可以一步步搭建自己的第一个BLE应用程序.通过这个Bl ...

  8. 利用css+原生js制作简易钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  9. Ubuntu18.04(linux)安装MySQL

    安装 mysql sudo apt-get --purge remove mysql-server mysql-common mysql-client sudo apt-get install mys ...

  10. Xshell访问和连接Linux

    Xshell是一款强大的安全终端模拟软件,Xshell 模拟了远程主机的操作,其实质就是通过访问和连接到远程主机,在本地实现对远程主机的操作.  一.下载 官网:https://www.netsara ...