(给DotNet加星标,提升.Net技能)
转自:追逐时光 cnblogs.com/Can-daydayup/p/11588531.html
前言
最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架,并且现在已支持.NET Core。
GitHub源码地址:https://github.com/tonyqus/npoi
因为之前使用NPOI导出Execl比较多,这次第一次使用NPOI 来导出Word文档还真没有什么头绪。首先看了下GItHub中的源码有一个简单Word导出的示例,然后在看了网上有很多关于NPOI导出Word文档的案例,发现一个特点网上的好像都差不多,对于我而言网上的这些案例完全能够实现我的这个功能,但是感觉看了网上这些案例对NPOI实例化段落,表格和设置相关样式不太清楚(可能是因为自己笨),并且假如使用网上的方法来实现我的功能的话代码量会比较大,而且感觉代码非常的冗余(我是一个追求代码简洁的人,怎么能够容忍这样的事情发生呢!)
因此通过查阅了一些资料和自己的理解,把关于使用NPOI导出Word时所要涉及的一些段落,表格样式做了相关注释,和把段落和表格的创建实例,设置文字、字体、对齐方式都封装了起了(为了少写代码),文章末尾会附上一个完整的案例下载地址。
一、首先引入NPOI NuGet
1、版本说明
NPOI 2.4.1 (注意不同版本可能使用的姿势有点小差别)
2、程序包管理器控制台输入一下命令安装
Install-Package NPOI -Version 2.4.1
3、通过NuGet管理解决方案安装
二、导出的Work文档内容格式样式
三、NPOI中的XWPFRun文本对象创建和属性简单概述
XWPFRun文本对象说明
XWPFRun是段落的文本对象,先创建段落对象才能够在段落对象的基础上创建文本对象,并设置相关文本样式。
如下所示:
///
XWPFRun文本对象的属性比较多,以下我简单说明常用的几种方式
XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象
XWPFRun xwpfRun= paragraph.CreateRun();//创建段落文本对象
xwpfRun.IsBold = isBold;//文字加粗
xwpfRun.SetText(fillContent);//填充内容
xwpfRun.FontSize = fontSize;//设置文字大小
xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定
xwpfRun.SetColor("BED4F1");//设置字体颜色--十六进制
xwpfRun.IsDoubleStrikeThrough=true;//是否显示双删除线
xwpfRun.IsStrikeThrough = true;//是否显示单删除线
xwpfRun.SetUnderline(UnderlinePatterns.Dash);//设置下划线,枚举类型
xwpfRun.SetTextPosition(20);//设置文本位置(设置两行之间的行间)
xwpfRun.AddBreak();//设置换行()
xwpfRun.AddTab();//添加tab键
xwpfRun.AddCarriageReturn();//添加回车键
xwpfRun.IsImprinted = true;//印迹(悬浮阴影),效果和浮雕类似
xwpfRun.IsItalic=true;//是否设置斜体(字体倾斜)
xwpfRun.Subscript = VerticalAlign.SUBSCRIPT;//设置下标,枚举类型
NPOI中关于XWPFRun属性的更多使用技巧,请阅读源码
源码地址:https://github.com/tonyqus/npoi/blob/master/ooxml/XWPF/Usermodel/XWPFRun.cs
四、NPOI生成Word完整代码
using Microsoft.AspNetCore.Hosting;
五、总结
写到最后我只想说我太难了,为了实现我想要的这个样式,通过不断的查阅资料,理解NPOI中的段落,文本基本属性。
最终在我生成第22个word时,总算是达到了我要的效果。这里我将自己在网上查阅的一些资料和自己的实践心得分享给大家,希望能够帮到大家,别忘了给我star哟。
GitHub完整示例地址
https://github.com/YSGStudyHards/NPOI-Export-Word
推荐阅读
(点击标题可跳转阅读)
200行代码实现Mini ASP.NET Core
ASP.NET Core 3.0 使用gRPC
ASP.NET Core 3.0 的新增功能
看完本文有收获?请转发分享给更多人
关注「DotNet」加星标,提升.Net技能
好文章,我在看❤️