NPIO 利用模板生成word文件
我们有时候会遇到一些用代码生成word文件的功能需求,接上一篇“Npoi XWPF Word 导出时插入图片无法显示 bug 完美解决” ,这次利用Npoi和word 模板生成word文件。
一、第一步:
根据需要要将模板设计好,需要填充的部分用$或者别的符合,如下图:
二、第二步
代码实现,在这个模板中,我通调试发现,整个模板只有一个段落如 var para = doc.Paragraphs[0],多个段落稍加改动即可。替换的内容我时存储keywords 字典中,list 应该也是可以的。
public static void CreatLabe4_1(string templatePath, string savePath, LableInfo lableInfo) { try { if (File.Exists(savePath)) { File.Delete(savePath); } FileStream fs = new FileStream(templatePath, FileMode.Open, FileAccess.Read); XWPFDocument doc = new XWPFDocument(fs); Dictionary<string, string> keywords = new Dictionary<string, string>(); keywords.Add("ProductName", lableInfo.ProductName); keywords.Add("Station", lableInfo.Station); keywords.Add("ContractNo", lableInfo.ContractNo); keywords.Add("BoxNo", lableInfo.BoxNo); keywords.Add("Count", lableInfo.Count.ToString()); keywords.Add("Size", lableInfo.Size); keywords.Add("Weight", lableInfo.Weight.ToString()); keywords.Add("ModelNumber", lableInfo.ModelNumber); keywords.Add("ProjcetNo", lableInfo.ProjcetNo); keywords.Add("ProjectName", lableInfo.ProjectName); keywords.Add("WorkNnmber", lableInfo.WorkNnmber); keywords.Add("BatchNumber", lableInfo.BatchNumber); keywords.Add("ParNumber", lableInfo.ParNumber); var para = doc.Paragraphs[0]; foreach (var item in keywords) { string oldtext = para.ParagraphText; if (oldtext == "") continue; string temptext = para.ParagraphText; if (temptext.Contains("{$" + item.Key + "}")) { oldtext = "{$" + item.Key + "}"; temptext=item.Value; para.ReplaceText(oldtext, temptext); } } FileStream output = new FileStream(savePath, FileMode.Create); doc.Write(output); output.Close(); output.Dispose(); } catch (Exception ex) { } }
完成效果如下:
标签:
npio c#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!