1. /// <summary>
  2. /// NPOI操作Word
  3. /// </summary>
  4. public class NpoiWordHelper
  5. {
  6. /// <summary>
  7. /// 创建文档
  8. /// </summary>
  9. /// <param name="setting"></param>
  10. public static void ExportDocument(DocumentSetting setting)
  11. {
  12. XWPFDocument docx = new XWPFDocument();
  13. MemoryStream ms = new MemoryStream();
  14.  
  15. //设置文档
  16. docx.Document.body.sectPr = new CT_SectPr();
  17. CT_SectPr setPr = docx.Document.body.sectPr;
  18. //获取页面大小
  19. Tuple<int, int> size = GetPaperSize(setting.PaperType);
  20. setPr.pgSz.w = (ulong)size.Item1;
  21. setPr.pgSz.h = (ulong)size.Item2;
  22. //创建一个段落
  23. CT_P p = docx.Document.body.AddNewP();
  24. //段落水平居中
  25. p.AddNewPPr().AddNewJc().val = ST_Jc.center;
  26. XWPFParagraph gp = new XWPFParagraph(p, docx);
  27.  
  28. XWPFRun gr = gp.CreateRun();
  29. //创建标题
  30. if (!string.IsNullOrEmpty(setting.TitleSetting.Title))
  31. {
  32. gr.GetCTR().AddNewRPr().AddNewRFonts().ascii = setting.TitleSetting.FontName;
  33. gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = setting.TitleSetting.FontName;
  34. gr.GetCTR().AddNewRPr().AddNewRFonts().hint = ST_Hint.eastAsia;
  35. gr.GetCTR().AddNewRPr().AddNewSz().val = (ulong)setting.TitleSetting.FontSize;//2号字体
  36. gr.GetCTR().AddNewRPr().AddNewSzCs().val = (ulong)setting.TitleSetting.FontSize;
  37. gr.GetCTR().AddNewRPr().AddNewB().val = setting.TitleSetting.HasBold; //加粗
  38. gr.GetCTR().AddNewRPr().AddNewColor().val = "black";//字体颜色
  39. gr.SetText(setting.TitleSetting.Title);
  40. }
  41.  
  42. //创建文档主要内容
  43. if (!string.IsNullOrEmpty(setting.MainContentSetting.MainContent))
  44. {
  45. p = docx.Document.body.AddNewP();
  46. p.AddNewPPr().AddNewJc().val = ST_Jc.both;
  47. gp = new XWPFParagraph(p, docx)
  48. {
  49. IndentationFirstLine =
  50. };
  51.  
  52. //单倍为默认值(240)不需设置,1.5倍=240X1.5=360,2倍=240X2=480
  53. p.AddNewPPr().AddNewSpacing().line = "";//固定20磅
  54. p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact;
  55.  
  56. gr = gp.CreateRun();
  57. CT_RPr rpr = gr.GetCTR().AddNewRPr();
  58. CT_Fonts rfonts = rpr.AddNewRFonts();
  59. rfonts.ascii = setting.MainContentSetting.FontName;
  60. rfonts.eastAsia = setting.MainContentSetting.FontName;
  61. rpr.AddNewSz().val = (ulong)setting.MainContentSetting.FontSize;//5号字体-21
  62. rpr.AddNewSzCs().val = (ulong)setting.MainContentSetting.FontSize;
  63. rpr.AddNewB().val = setting.MainContentSetting.HasBold;
  64.  
  65. gr.SetText(setting.MainContentSetting.MainContent);
  66. }
  67.  
  68. //开始写入
  69. docx.Write(ms);
  70.  
  71. using (FileStream fs = new FileStream(setting.SavePath, FileMode.Create, FileAccess.Write))
  72. {
  73. byte[] data = ms.ToArray();
  74. fs.Write(data, , data.Length);
  75. fs.Flush();
  76. }
  77. ms.Close();
  78. }
  79.  
  80. /// <summary>
  81. /// 设置文档
  82. /// </summary>
  83. public class DocumentSetting
  84. {
  85. /// <summary>
  86. /// 文档类型,默认为A4纵向
  87. /// </summary>
  88. public PaperType PaperType { get; set; } = PaperType.A4_V;
  89. /// <summary>
  90. /// 保存地址,包含文件名
  91. /// </summary>
  92. public string SavePath { get; set; }
  93. /// <summary>
  94. /// 文档标题相关
  95. /// </summary>
  96. public ContentItemSetting TitleSetting { get; set; }
  97. /// <summary>
  98. /// 文档主要内容
  99. /// </summary>
  100. public ContentItemSetting MainContentSetting { get; set; }
  101. }
  102.  
  103. /// <summary>
  104. /// 文档内容相关
  105. /// </summary>
  106. public class ContentItemSetting
  107. {
  108. /// <summary>
  109. /// 标题
  110. /// </summary>
  111. public string Title { get; set; }
  112. /// <summary>
  113. /// 主要内容
  114. /// </summary>
  115. public string MainContent { get; set; }
  116. /// <summary>
  117. /// 使用字体
  118. /// </summary>
  119. public string FontName { get; set; } = "宋体";
  120. /// <summary>
  121. /// 字体大小,默认2号字体
  122. /// </summary>
  123. public int FontSize { get; set; } = ;
  124. /// <summary>
  125. /// 是否加粗,默认不加粗
  126. /// </summary>
  127. public bool HasBold { get; set; } = false;
  128. }
  129.  
  130. /// <summary>
  131. /// 纸张类型
  132. /// </summary>
  133. public enum PaperType
  134. {
  135. /// <summary>
  136. /// A4纵向
  137. /// </summary>
  138. A4_V,
  139. /// <summary>
  140. /// A4横向
  141. /// </summary>
  142. A4_H,
  143.  
  144. /// <summary>
  145. /// A5纵向
  146. /// </summary>
  147. A5_V,
  148. /// <summary>
  149. /// A5横向
  150. /// </summary>
  151. A5_H,
  152.  
  153. /// <summary>
  154. /// A6纵向
  155. /// </summary>
  156. A6_V,
  157. /// <summary>
  158. /// A6横向
  159. /// </summary>
  160. A6_H
  161. }
  162.  
  163. #region 私有方法
  164. /// <summary>
  165. /// 获取纸张大小,单位:Twip
  166. /// <para>换算关系:1英寸=1440缇 1厘米=567缇 1磅=20缇 1像素=15缇</para>
  167. /// </summary>
  168. /// <param name="type"></param>
  169. /// <returns></returns>
  170. private static Tuple<int, int> GetPaperSize(PaperType type)
  171. {
  172. Tuple<int, int> res = null;
  173. switch (type)
  174. {
  175. case PaperType.A4_V:
  176. res = new Tuple<int, int>(, );
  177. break;
  178. case PaperType.A4_H:
  179. res = new Tuple<int, int>(, );
  180. break;
  181.  
  182. case PaperType.A5_V:
  183. res = new Tuple<int, int>(, );
  184. break;
  185. case PaperType.A5_H:
  186. res = new Tuple<int, int>(, );
  187. break;
  188.  
  189. case PaperType.A6_V:
  190. res = new Tuple<int, int>(, );
  191. break;
  192. case PaperType.A6_H:
  193. res = new Tuple<int, int>(, );
  194. break;
  195. }
  196. return res;
  197. }
  198. #endregion
  199. }

利用NPOI导出Word文档帮助类的更多相关文章

  1. 使用Spire.Doc组件利用模板导出Word文档

    以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作, ...

  2. 利用NPOI生成word文档(c#)

    WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...

  3. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...

  4. 利用标签导出Word文档

    1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; us ...

  5. NPOI插件生成导出word文档

    因为之前没有接触NPOI过这个插件,所以几乎都是自己一边百度摸索一边学习. 这个插件对于Excel的数据导入和导出,可以说是很方便了, 但是对于导出word文档,可以说是很少的,百度了很多....也不 ...

  6. C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1

    Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,

  7. Java 用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  8. 【Java】用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  9. .NET通过调用Office组件导出Word文档

    .NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...

随机推荐

  1. node.js之文件读写模块,配合递归函数遍历文件夹和其中的文件

    fs.stat会返回文件夹会文件的属性 var fs = require('fs'); var wenwa = function (pathname,callback) { fs.stat(pathn ...

  2. C#中一些常用的方法使用

    一.string.Empty string.Empty就相当于 "" ,一般用于字符串的初始化 , 比如: string a; Console.WriteLine(a);//这里会 ...

  3. 013_使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

    for i in `cat user.txt`do    useradd $i    echo "123456" | passwd --stdin $idone

  4. chrome扩展开发实战入门之一-hellocrx

    后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...

  5. docker 1.12

    curl https://releases.rancher.com/install-docker/1.12.sh | sh http://rancher.com/docs/rancher/v1.6/e ...

  6. 错误/异常:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/beans_common.xml]...的解决方法

    1.第一个这种类型的异常 1.1.异常信息:org.springframework.beans.factory.BeanCreationException: Error creating bean w ...

  7. 什么是CSR

    CSR的全称是Certificate Signing Request. 是我们在申请Https证书是向CA所提供的一杯申请书.其内部储存了我们申请证书所需要的基本信息.它是一个经过Base64编码的纯 ...

  8. 常使用的VIM命令及文件颜色代表含义

    编辑模式--->输入模式 i : insert 在光标所在处输入: a:append 在光标所在处后面输入: o:在当前光标所在行的下方打开一个新行: I:在当前光标所在行的行首输入: A:在当 ...

  9. 全局安装webpack和本地安装

    前提条件 在开始之前,请确保安装了 Node.js 的最新版本.使用 Node.js 最新的长期支持版本(LTS - Long Term Support),是理想的起步.使用旧版本,你可能遇到各种问题 ...

  10. XXE外部实体注入漏洞——PHP

    前言 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进行处理时引发的安全问题. 在XML1.0标准 ...