.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 = "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。

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

时间: 2024-10-02 18:01:30

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

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

使用NPOI可以方便的实现服务端对Word.Excel的读写.要实现对Word的读写操作,需要引用NPOI.OOXML.dll,应用命名空间XWPF. 本文使用NPOI 2.0实现对Word的基本生成.下载操作. NOPI 2.0 下载地址:http://npoi.codeplex.com/downloads/get/764162 虽然现在最新版本为NPOI 2.1.1 ,但笔者使用2.1.1的NPOI.OOXML.dll时,发现无法实现段落格式化功能,故推荐使用本文版本. 需要添加的命名空间:

NPOI读写Excel表格、Word文档

NPOI是从POI移植过来的.NET版本,专门对Word.Excel进行读写操作的一个开源项目 下面就试着怎么用我们的C#来进行读写操作,我现在用的Office版本是2016 我们首先通过Nuget把NPOI引入到我们的项目中 1.读取Excel表格 using(FileStream fs=new FileStream(@"C:\Users\BIDIANQING\Desktop\1.xlsx", FileMode.Open,FileAccess.Read)) { XSSFWorkboo

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

J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了,用的是Struts2+poi实现的.poi对excel表格操作能力很强,但是对word文档的支持一直没有更新,操作能力有限. iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf 的文档,而且可以将XML.Ht

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

1 基于wps直接将页面信息下载成word文档 1 public void test() 2 { 3 4 WPS.Application wps = null; 5 try 6 { 7 wps = new WPS.Application(); 8 } 9 catch (Exception ex) 10 { 11 return; 12 } 13 var httpurl = "http://www.baidu.com"; 14 WPS.Document doc = wps.Document

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

? 最近项目中有同事用到word文档导出功能,遇到了一些导出失败问题,帮其看了下解决问题的同事,看了下之前的代码发现几个问题: 代码编写不规范,word导出功能未收口 重复代码导出都是 实现逻辑比较复杂,不易于维护及使用 在帮其解决问题后,写了下面这个ViewResult拓展,依赖Razor视图,能够直接转换页面为word文档,但是不支持外联样式表,样式可以定义在<head>头部 废话不多说,直接上代码: ? public class WordFileResult : ViewResultBa

JSP实现word文档的上传,在线预览,下载

前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了.希望得到各位大神的指教.下面我就具体谈谈自己的实现过程,总结一下学习中的收获. 我相信很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览.Word文档甚至始终都会通过本地的Office软件打开.那么,问题来了,如何可以在线浏览word文档呢? 其实,我在最初的时候

php在程序中把网页生成word文档并提供下载

在这篇文章中主要解决两个问题: 1:在php中如何把html中的内容生成到word文档中 2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示. 3:php把html中的内容生成到word文档中时,相关样式不兼容问题 正文:    echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"  xmlns:w="urn:schemas-microsoft-com:

通过NPOI导出Word文档

1 XWPFDocument doc = new XWPFDocument(); 2 XWPFParagraph p0 = doc.CreateParagraph(); 3 p0.Alignment = ParagraphAlignment.LEFT; 4 5 XWPFRun r0 = p0.CreateRun(); 6 r0.FontFamily = "宋体"; 7 r0.FontSize = 18; 8 r0.IsBold = true; 9 r0.SetText("未登

spring mvc 下 word 文档(含图片)导出

最近在处理 word 文档导出工作,整理并总结下. 经过一番百度和亲测,大部分人使用的都是iText,iReport等...当我去尝试用这几种方法的时候,要实现我的需求可以,但是代码量太大了~~~因为我的 word 文档结构比较复杂,内容较多,有点懒得去写.于是我寻求通过jsp 或 javascript 页面的方式导出,这样子格式都直接在web页面上已经编辑好了,不许通过代码再转成word的形式. javascript 方式的话需要使用到ActiveXObject,这样子对浏览器是有要求的~~直