首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# NPOI 導出 Word (.docx) 完整前後端範例:簡歷產生器

     編輯:程式設計疑難解答

前置準備

  • NuGet 安裝:NPOI、NPOI.OOXML
  • 專案目標:.NET Framework 4.6.1+ / .NET Core 3.1+

後端核心程式碼 (Controller)


using NPOI.XWPF.UserModel;
using System.IO;
using Microsoft.AspNetCore.Mvc;

public IActionResult ExportResume() {
    var doc = new XWPFDocument();

    // 標題
    AddParagraph(doc, "未登錄過學生的賬號密碼", "宋體", 18, true, ParagraphAlignment.LEFT);
    // 備註
    AddParagraph(doc, "(備註:已登錄過的學生密碼不顯示)", "宋體", 10, true, ParagraphAlignment.LEFT);
    // 學校
    AddParagraph(doc, "學校:XX一中", "宋體", 10, true, ParagraphAlignment.LEFT);
    // 班級
    AddParagraph(doc, "班級:(7)", "宋體", 10, true, ParagraphAlignment.LEFT);
    // 班主任
    AddParagraph(doc, "班主任:ddd", "宋體", 10, true, ParagraphAlignment.LEFT);
    // 備註行
    AddParagraph(doc, "可以在此處添加備註:", "宋體", 10, true, ParagraphAlignment.LEFT);

    // 輸出
    using (var ms = new MemoryStream()) {
        doc.Write(ms);
        return File(ms.ToArray(), 
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "Resume.docx");
    }
}

private void AddParagraph(XWPFDocument doc, string text, string font, int size, bool bold, ParagraphAlignment align) {
    var p = doc.CreateParagraph();
    p.Alignment = align;
    var r = p.CreateRun();
    r.SetText(text);
    r.FontFamily = font;
    r.FontSize = size;
    r.IsBold = bold;
}

前端呼叫 (Razor / HTML)



     匯出 Word 簡歷

進階:表格佈局 (簡歷常用)


var table = doc.CreateTable(4, 2);
table.GetRow(0).GetCell(0).SetText("姓名");
table.GetRow(0).GetCell(1).SetText(model.Name);
table.GetRow(1).GetCell(0).SetText("性別");
table.GetRow(1).GetCell(1).SetText(model.Gender);
// 設定邊框、寬度...

常見問題

問題解決
中文亂碼確認字型名稱正確 (如「微軟正黑體」),且伺服器已安裝該字型
檔案損壞務必 doc.Write(stream) 後再 stream.ToArray(),不可倒序
效能大量資料改用 SXWPFDocument (串流寫入)

替代方案比較

  • Open XML SDK:微軟官方、無第三方依賴、API 較繁瑣
  • DocX:語法簡潔、但維護較慢
  • NPOI:⭐ 推薦,相容性好、社群活躍、支援 .doc/.docx
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved