.Net MVC+NPOI实现下载自定义的Word文档
我们浏览很多网站时都会看到下载文件的功能(图片、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文档的更多相关文章
- C# WebForm 使用NPOI 2 生成简单的word文档(.docx)
使用NPOI可以方便的实现服务端对Word.Excel的读写.要实现对Word的读写操作,需要引用NPOI.OOXML.dll,应用命名空间XWPF. 本文使用NPOI 2.0实现对Word的基本生成 ...
- C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1
Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,
- Struts2利用iText导出word文档(包含表格)以提供下载
J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...
- Java 使用新方法打印Word文档
前言 我曾写过一篇文章,它主要介绍了如何通过物理打印机和虚拟打印机来打印Word文档.今天这篇教程将介绍一种新的方法来实现对Word文档的打印. 此次使用到的类库仍然是Spire.Doc for Ja ...
- word文档快速转换为PPT演示文稿
方法一: 访问http://t.im/pdftoppt,点击继续浏览(会跳转至:https://smallpdf.com/cn/pdf-to-ppt): 打开word文档,设置为“横向”,输出为PDF ...
- 将html转换为word文档的几种方式
1 基于wps直接将页面信息下载成word文档 public void test() { WPS.Application wps = null; try { wps = new WPS.Applica ...
- java 使用poi读取word文档存入数据库
使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...
- ASP.NET MVC 拓展ViewResult实现word文档下载
最近项目中有同事用到word文档导出功能,遇到了一些导出失败问题,帮其看了下解决问题的同事,看了下之前的代码发现几个问题: 代码编写不规范,word导出功能未收口 重复代码导出都是 实现逻辑比较复 ...
- 利用NPOI生成word文档(c#)
WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...
随机推荐
- tkinter中checkbutton多选框控件和variable用法(六)
checkbutton控件 简单的实现多选: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry ...
- 集合-Table
当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现.为此Guava提供了一个新 ...
- Java - Instrumentation
使用JRebel启动工程时加上VM参数时有一个参数是"-javaagent:D:\jrebel_5.6.0\jrebel.jar". javaagent是什么? java -hel ...
- http.go
) } if name != cfgName { continue } return val.FieldByNa ...
- [NOIP2016]愤怒的小鸟 D2 T3
Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的 ...
- oracle改造常见问题
一. to_char: 将数值型或者日期型转化为字符型 (string) 日期到字符操作 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from du ...
- 毕业样本=[华威大学毕业证书]Warwick原件一模一样证书
华威大学毕业证[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...
- python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装
使用场景: 在自动化测试过程中,难免会用到反判断,包括异常情况的处理,比如:find_element_by_name('测试') 判断"测试"是否存在,存在则点击,不存在则执行其他 ...
- 【SAP HANA】新建账户和数据库(2)
开启HANA Studio,进入到User和Role的目录,这两个地方是创建账号和权限的. 新建用户 输入用户名和密码即可. 注意,如果系统里有同名的Catalog(数据库)存在的话,会报错,因为默认 ...
- 对图片进行索引,存入数据库sqlite3中,实现快速搜索打开
对图片进行索引,存入数据库中,实现快速搜索打开 这个任务分为两步: 第一步:建立索引 import os import shutil import sqlite3 # 扫描函数,需扫描路径目录处 ...