C# 使用NPOI生成Word文件

NuGet 安装 NPOI

1. 建立模板(可选): 手动建立Word模板, 多使用表格然后隐藏边框, 方便数据插入固定位置

2. 建立Word对象引入模板

string dPath = $"{Environment.CurrentDirectory}\\Data\\Demo.docx";
Stream fs = new FileStream(dPath, FileMode.Open);
XWPFDocument document = new XWPFDocument(fs);

3. 段落插入

public void Main()
{
    string dPath = $"{Environment.CurrentDirectory}\\Data\\Demo.docx";
    Stream fs = new FileStream(dPath, FileMode.Open);
    XWPFDocument document = new XWPFDocument(fs);

    AddParagraph(document, 0, 2, 2, AddPlaceholder(a1));
    AddParagraph(document, 0, 3, 2, AddPlaceholder(a2));
    AddParagraph(document, 0, 4, 2, AddPlaceholder(a3));
}
/// <summary>
/// 表格内插入段落
/// </summary>
/// <param name="document">模板对象</param>
/// <param name="TabIndex">表格序号</param>
/// <param name="Row"></param>
/// <param name="Cell"></param>
/// <param name="value">插入数据</param>
/// <returns></returns>
public XWPFParagraph AddParagraph(XWPFDocument document, int TabIndex, int Row, int Cell, string value)
{
    XWPFParagraph paragraph = document.Tables[TabIndex].GetRow(Row).GetCell(Cell).Paragraphs[0]; //创建段落对象
    paragraph.Alignment = ParagraphAlignment.CENTER;//文字显示位置,段落排列(左对齐,居中,右对齐)
    XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象
    xwpfRun.SetText(value);//填充内容
    xwpfRun.FontSize = 14;//设置文字大小
    xwpfRun.IsItalic = false;//是否设置斜体(字体倾斜)
    //xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制
    xwpfRun.SetFontFamily("宋体", FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定

    return paragraph;
}

4. 插入图片

table = document.Tables[4];

XWPFTableCell Cell = table.GetRow(1).GetCell(0);
XWPFParagraph p = Cell.Paragraphs[0];
XWPFRun run = p.CreateRun();
using (FileStream file = File.Open($"{PDFpath}.png", FileMode.OpenOrCreate))
{
    run.AddPicture(file, (int)NPOI.XWPF.UserModel.PictureType.PNG, "1.png", 5100000, 3000000);
}

5. 保存文件

sting SavePath = $"{Environment.CurrentDirectory}\\TestData\\{TestProject.ProjectName}\\{ObjectName}.docx";
using (FileStream fswrite = File.Open(SavePath, FileMode.OpenOrCreate))
{
    document.Write(fswrite);
}

document.Close();

 

posted @ 2025-10-20 13:51  妖言惑众'  阅读(7)  评论(0)    收藏  举报