分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

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

发布时间:2023-09-06 02:31责任编辑:胡小海关键词:MVC

我们浏览很多网站时都会看到下载文件的功能(图片、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 = "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;}<!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文档

原文地址:https://www.cnblogs.com/jixiaosa/p/10322364.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved