利用NPOI导出Word文档帮助类
/// <summary>
/// NPOI操作Word
/// </summary>
public class NpoiWordHelper
{
/// <summary>
/// 创建文档
/// </summary>
/// <param name="setting"></param>
public static void ExportDocument(DocumentSetting setting)
{
XWPFDocument docx = new XWPFDocument();
MemoryStream ms = new MemoryStream(); //设置文档
docx.Document.body.sectPr = new CT_SectPr();
CT_SectPr setPr = docx.Document.body.sectPr;
//获取页面大小
Tuple<int, int> size = GetPaperSize(setting.PaperType);
setPr.pgSz.w = (ulong)size.Item1;
setPr.pgSz.h = (ulong)size.Item2;
//创建一个段落
CT_P p = docx.Document.body.AddNewP();
//段落水平居中
p.AddNewPPr().AddNewJc().val = ST_Jc.center;
XWPFParagraph gp = new XWPFParagraph(p, docx); XWPFRun gr = gp.CreateRun();
//创建标题
if (!string.IsNullOrEmpty(setting.TitleSetting.Title))
{
gr.GetCTR().AddNewRPr().AddNewRFonts().ascii = setting.TitleSetting.FontName;
gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = setting.TitleSetting.FontName;
gr.GetCTR().AddNewRPr().AddNewRFonts().hint = ST_Hint.eastAsia;
gr.GetCTR().AddNewRPr().AddNewSz().val = (ulong)setting.TitleSetting.FontSize;//2号字体
gr.GetCTR().AddNewRPr().AddNewSzCs().val = (ulong)setting.TitleSetting.FontSize;
gr.GetCTR().AddNewRPr().AddNewB().val = setting.TitleSetting.HasBold; //加粗
gr.GetCTR().AddNewRPr().AddNewColor().val = "black";//字体颜色
gr.SetText(setting.TitleSetting.Title);
} //创建文档主要内容
if (!string.IsNullOrEmpty(setting.MainContentSetting.MainContent))
{
p = docx.Document.body.AddNewP();
p.AddNewPPr().AddNewJc().val = ST_Jc.both;
gp = new XWPFParagraph(p, docx)
{
IndentationFirstLine =
}; //单倍为默认值(240)不需设置,1.5倍=240X1.5=360,2倍=240X2=480
p.AddNewPPr().AddNewSpacing().line = "";//固定20磅
p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact; gr = gp.CreateRun();
CT_RPr rpr = gr.GetCTR().AddNewRPr();
CT_Fonts rfonts = rpr.AddNewRFonts();
rfonts.ascii = setting.MainContentSetting.FontName;
rfonts.eastAsia = setting.MainContentSetting.FontName;
rpr.AddNewSz().val = (ulong)setting.MainContentSetting.FontSize;//5号字体-21
rpr.AddNewSzCs().val = (ulong)setting.MainContentSetting.FontSize;
rpr.AddNewB().val = setting.MainContentSetting.HasBold; gr.SetText(setting.MainContentSetting.MainContent);
} //开始写入
docx.Write(ms); using (FileStream fs = new FileStream(setting.SavePath, FileMode.Create, FileAccess.Write))
{
byte[] data = ms.ToArray();
fs.Write(data, , data.Length);
fs.Flush();
}
ms.Close();
} /// <summary>
/// 设置文档
/// </summary>
public class DocumentSetting
{
/// <summary>
/// 文档类型,默认为A4纵向
/// </summary>
public PaperType PaperType { get; set; } = PaperType.A4_V;
/// <summary>
/// 保存地址,包含文件名
/// </summary>
public string SavePath { get; set; }
/// <summary>
/// 文档标题相关
/// </summary>
public ContentItemSetting TitleSetting { get; set; }
/// <summary>
/// 文档主要内容
/// </summary>
public ContentItemSetting MainContentSetting { get; set; }
} /// <summary>
/// 文档内容相关
/// </summary>
public class ContentItemSetting
{
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 主要内容
/// </summary>
public string MainContent { get; set; }
/// <summary>
/// 使用字体
/// </summary>
public string FontName { get; set; } = "宋体";
/// <summary>
/// 字体大小,默认2号字体
/// </summary>
public int FontSize { get; set; } = ;
/// <summary>
/// 是否加粗,默认不加粗
/// </summary>
public bool HasBold { get; set; } = false;
} /// <summary>
/// 纸张类型
/// </summary>
public enum PaperType
{
/// <summary>
/// A4纵向
/// </summary>
A4_V,
/// <summary>
/// A4横向
/// </summary>
A4_H, /// <summary>
/// A5纵向
/// </summary>
A5_V,
/// <summary>
/// A5横向
/// </summary>
A5_H, /// <summary>
/// A6纵向
/// </summary>
A6_V,
/// <summary>
/// A6横向
/// </summary>
A6_H
} #region 私有方法
/// <summary>
/// 获取纸张大小,单位:Twip
/// <para>换算关系:1英寸=1440缇 1厘米=567缇 1磅=20缇 1像素=15缇</para>
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
private static Tuple<int, int> GetPaperSize(PaperType type)
{
Tuple<int, int> res = null;
switch (type)
{
case PaperType.A4_V:
res = new Tuple<int, int>(, );
break;
case PaperType.A4_H:
res = new Tuple<int, int>(, );
break; case PaperType.A5_V:
res = new Tuple<int, int>(, );
break;
case PaperType.A5_H:
res = new Tuple<int, int>(, );
break; case PaperType.A6_V:
res = new Tuple<int, int>(, );
break;
case PaperType.A6_H:
res = new Tuple<int, int>(, );
break;
}
return res;
}
#endregion
}
利用NPOI导出Word文档帮助类的更多相关文章
- 使用Spire.Doc组件利用模板导出Word文档
以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作, ...
- 利用NPOI生成word文档(c#)
WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...
- Struts2利用iText导出word文档(包含表格)以提供下载
J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...
- 利用标签导出Word文档
1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; us ...
- NPOI插件生成导出word文档
因为之前没有接触NPOI过这个插件,所以几乎都是自己一边百度摸索一边学习. 这个插件对于Excel的数据导入和导出,可以说是很方便了, 但是对于导出word文档,可以说是很少的,百度了很多....也不 ...
- C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1
Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,
- Java 用Freemarker完美导出word文档(带图片)
Java 用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...
- 【Java】用Freemarker完美导出word文档(带图片)
Java 用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...
- .NET通过调用Office组件导出Word文档
.NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...
随机推荐
- .Net Core:Middleware自定义中间件
新建standard类库项目,添加引用包 Microsoft.AspNetCore 1.扩展IApplicationBuilder using Microsoft.AspNetCore.Builder ...
- sql server 知识整理 isnull函数()
exec sp_helptext ProPrecode_matcode_uf exec sp_helptext 存储过程名字 isnull 函数() SQL Serve中的isnull()函数: is ...
- python 改变函数实参的值
def change(n): n[] = 'Mr Gumby' names = ['Mrs Entity', 'Mrs. Thing'] change(names) print(names) resu ...
- js快速将字符串数组转化为数字数组(互换)
1.数字数组转化为字符串数组 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); //结果: ['1', '2', '3', '4', '5 ...
- 访问项目时报错org.apache.jasper.JasperException: java.lang.NullPointerException
错误信息:org.apache.jasper.JasperException: java.lang.NullPointerException 原因:项目依赖的jar包和tomcat容器的依赖jar包有 ...
- 20175313 张黎仙《Java程序设计》第十周学习总结
目录 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码调试中的问题和解决过程 四.代码托管 五.心得体会 六.学习进度条 七.参考资料 一.教材学习内容总结 第十二章内容 主要内容 杂项 ...
- 删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e
原创:转载请注明出处. [天勤2-2]删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e 代码: //删除顺序表L中下标为p(0 ...
- git常用操作方法
在实际开发,测试中,会使用git作为版本控制工具来完成团队协作.因此,对基本的git操作指令进行总结是十分有必要的,本文对一些术语或者理论基础,不重新码字,可以参考廖雪峰老师的博文,本文只对命令做归纳 ...
- Mac下持续集成-与JMeter与Ant执行后自动发送邮件的整合(性能报告)==
配置信息如下,其他的为默认的: 添加性能测试报告后,性能测试报告部分构件失败:
- 属性 每秒10万吞吐 并发 架构 设计 58最核心的帖子中心服务IMC 类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务
小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...