NpoiWordParagraphTextStyle.cs 6.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using NPOI.XWPF.UserModel;
  2. using NPOI.OpenXmlFormats.Wordprocessing;
  3. using SHJX.Service.Model.Dao;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Data;
  8. using NPOI.SS.Util;
  9. using System.Drawing;
  10. using System.Windows;
  11. namespace SHJX.Service.Common.Extend
  12. {
  13. public abstract class NpoiWordParagraphTextStyle
  14. {
  15. /// <summary>
  16. /// 创建word文档中的段落对象和设置段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)
  17. /// </summary>
  18. /// <param name="document">document文档对象</param>
  19. /// <param name="fillContent">段落第一个文本对象填充的内容</param>
  20. /// <param name="isBold">是否加粗</param>
  21. /// <param name="fontSize">字体大小</param>
  22. /// <param name="fontFamily">字体</param>
  23. /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>
  24. /// <param name="isStatement">是否在同一段落创建第二个文本对象(解决同一段落里面需要填充两个或者多个文本值的情况,多个文本需要自己拓展,现在最多支持两个)</param>
  25. /// <param name="secondFillContent">第二次声明的文本对象填充的内容,样式与第一次的一致</param>
  26. /// <param name="fontColor">字体颜色--十六进制</param>
  27. /// <param name="isItalic">是否设置斜体(字体倾斜)</param>
  28. /// <returns></returns>
  29. internal XWPFParagraph SetParagraph(XWPFDocument document, string fillContent, bool isBold, int fontSize, string fontFamily, ParagraphAlignment paragraphAlign, bool isStatement = false, string secondFillContent = "", string fontColor = "000000", bool isItalic = false)
  30. {
  31. XWPFParagraph paragraph = document.CreateParagraph(); //创建段落对象
  32. paragraph.Alignment = paragraphAlign; //文字显示位置,段落排列(左对齐,居中,右对齐)
  33. XWPFRun xwpfRun = paragraph.CreateRun(); //创建段落文本对象
  34. xwpfRun.IsBold = isBold; //文字加粗
  35. xwpfRun.SetText(fillContent); //填充内容
  36. xwpfRun.FontSize = fontSize; //设置文字大小
  37. xwpfRun.IsItalic = isItalic; //是否设置斜体(字体倾斜)
  38. xwpfRun.SetColor(fontColor); //设置字体颜色--十六进制
  39. xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定
  40. if (!isStatement) return paragraph;
  41. XWPFRun secondXwpfRun = paragraph.CreateRun(); //创建段落文本对象
  42. secondXwpfRun.IsBold = isBold; //文字加粗
  43. secondXwpfRun.SetText(secondFillContent); //填充内容
  44. secondXwpfRun.FontSize = fontSize; //设置文字大小
  45. secondXwpfRun.IsItalic = isItalic; //是否设置斜体(字体倾斜)
  46. secondXwpfRun.SetColor(fontColor); //设置字体颜色--十六进制
  47. secondXwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定
  48. return paragraph;
  49. }
  50. /// <summary>
  51. /// 创建Word文档中表格段落实例和设置表格段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)
  52. /// </summary>
  53. /// <param name="document">document文档对象</param>
  54. /// <param name="table">表格对象</param>
  55. /// <param name="fillContent">要填充的文字</param>
  56. /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>
  57. /// <param name="textPosition">设置文本位置(设置两行之间的行间,从而实现表格文字垂直居中的效果),从而实现table的高度设置效果 </param>
  58. /// <param name="isBold">是否加粗(true加粗,false不加粗)</param>
  59. /// <param name="fontSize">字体大小</param>
  60. /// <param name="fontColor">字体颜色--十六进制</param>
  61. /// <param name="isItalic">是否设置斜体(字体倾斜)</param>
  62. /// <returns></returns>
  63. internal XWPFParagraph SetTableParagraph(XWPFDocument document, XWPFTable table, string fillContent, ParagraphAlignment paragraphAlign, int textPosition = 24, bool isBold = false, int fontSize = 10, string fontColor = "000000", bool isItalic = false)
  64. {
  65. var para = new CT_P();
  66. //设置单元格文本对齐
  67. para.AddNewPPr().AddNewTextAlignment();
  68. XWPFParagraph paragraph = new XWPFParagraph(para, table.Body); //创建表格中的段落对象
  69. paragraph.Alignment = paragraphAlign; //文字显示位置,段落排列(左对齐,居中,右对齐)
  70. //paragraph.FontAlignment =Convert.ToInt32(ParagraphAlignment.CENTER); //字体在单元格内显示位置与 paragraph.Alignment效果相似
  71. XWPFRun xwpfRun = paragraph.CreateRun(); //创建段落文本对象
  72. xwpfRun.SetText(fillContent);
  73. xwpfRun.FontSize = fontSize; //字体大小
  74. xwpfRun.SetColor(fontColor); //设置字体颜色--十六进制
  75. xwpfRun.IsItalic = isItalic; //是否设置斜体(字体倾斜)
  76. xwpfRun.IsBold = isBold; //是否加粗
  77. xwpfRun.SetFontFamily("宋体", FontCharRange.None); //设置字体(如:微软雅黑,华文楷体,宋体)
  78. //xwpfRun.SetTextPosition(textPosition); //设置文本位置(设置两行之间的行间),从而实现table的高度设置效果
  79. return paragraph;
  80. }
  81. public abstract void Write(List<EquipmentTask> tasks, string savePath);
  82. }
  83. }