NpoiWordParagraphTextStyle.cs 6.2 KB

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