.Net MVC+NPOI實現下載自定義的Word文檔
阿新 • • 發佈:2019-01-26
博客 sub img graph ica 控制 方式 下載 center
我們瀏覽很多網站時都會看到下載文件的功能(圖片、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 = newMemoryStream(); // 創建文檔對象 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文檔