.Net MVC+NPOI實現下載自定義的Word文檔

下載文件的功能(圖片、word文檔等)html

技術點:MVC、NPOI、Form表單。數據庫

1. 引入NPOI的Nuget包,這個相信道友們都不陌生。瀏覽器

 

 

2.添加控制器及方法app

public class DownloadController : Controller
    {
        // GET: Download
        public ActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// 下載Word
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportWord()
        {
            return View();
        }
    }

3.修改ExportWord方法post

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方法,貧道在這裏就用它了。spa

 

添加完視圖以後,修改裏面的代碼,建立一個表單,一個sumbit按鈕,嗯。貧道就用這提交表單的方式來觸發ExportWord方法。code

@{
    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。。。可是貧道只是起了一個演示做用,就無所謂了。orm

點一下,處罰後臺的方法,而後下載文件。 瀏覽器底部已顯示下載完成。htm

 

 

打開這個Word 看看內容是否是和咱們在後臺寫同樣

 

完美收功!最後放一張gif。

相關文章
相關標籤/搜索