c# EF导出到word

举报
清雨小竹 发表于 2022/09/25 03:33:54 2022/09/25
【摘要】 引用库:FreeSpire.Doc  using Spire.Doc;using Spire.Doc.Documents;using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using S...

引用库:FreeSpire.Doc 


  
  1. using Spire.Doc;
  2. using Spire.Doc.Documents;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Web;
  9. namespace YFAPICommon.Libs
  10. {
  11. public class WordTool
  12. {
  13. public static void writeWordFile<T>(T neirongData,string title,string path)
  14. {
  15. //创建文档
  16. Document doc = new Document();
  17. //标题落样式
  18. ParagraphStyle style1 = new ParagraphStyle(doc);
  19. style1.Name = "titleStyle";
  20. style1.CharacterFormat.Bold = true;
  21. //style1.CharacterFormat.TextColor = Color.Purple;
  22. style1.CharacterFormat.FontName = "宋体";
  23. style1.CharacterFormat.FontSize = 18;
  24. doc.Styles.Add(style1);
  25. //字段名段落样式
  26. ParagraphStyle style2 = new ParagraphStyle(doc);
  27. style2.Name = "zhutiStyle";
  28. style2.CharacterFormat.FontName = "宋体";
  29. style2.CharacterFormat.FontSize = 13;
  30. style2.CharacterFormat.Bold = true;
  31. doc.Styles.Add(style2);
  32. //字段内容段落样式
  33. ParagraphStyle style3 = new ParagraphStyle(doc);
  34. style3.Name = "neirongStyle";
  35. style3.CharacterFormat.FontName = "宋体";
  36. style3.CharacterFormat.FontSize = 11;
  37. doc.Styles.Add(style3);
  38. //添加section
  39. Section s = doc.AddSection();
  40. //添加标题
  41. Paragraph para1 = s.AddParagraph();
  42. para1.AppendText(title);
  43. para1.ApplyStyle("titleStyle");
  44. //设置段落对齐方式
  45. para1.Format.HorizontalAlignment = HorizontalAlignment.Center;
  46. //设置段落缩进
  47. para1.Format.AfterSpacing = 15;
  48. //遍历neirongData对象字段内容
  49. PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
  50. object[] values = new object[properties.Count];
  51. for (int j = 0; j < values.Length; j++)
  52. {
  53. var col = properties[j].Name;//字段名
  54. object obj = properties[j].GetValue(neirongData);
  55. var str = obj == null ? "" : obj.ToString();//字段内容
  56. //字段名
  57. Paragraph zhuti = s.AddParagraph();
  58. zhuti.AppendText(col);
  59. zhuti.Format.HorizontalAlignment = HorizontalAlignment.Justify;
  60. zhuti.ApplyStyle("zhutiStyle");
  61. zhuti.Format.FirstLineIndent = 10;
  62. zhuti.Format.AfterSpacing = 15;
  63. //字段内容
  64. Paragraph neirong = s.AddParagraph();
  65. neirong.AppendText(str);
  66. neirong.Format.HorizontalAlignment = HorizontalAlignment.Justify;
  67. neirong.ApplyStyle("neirongStyle");
  68. neirong.Format.FirstLineIndent = 10;
  69. neirong.Format.AfterSpacing = 15;
  70. }
  71. //保存文档
  72. doc.SaveToFile(path, FileFormat.Docx2013);
  73. }
  74. }
  75. }

调用


  
  1. public ReturnNode exportToWord(BaseAdminDetailInput input)
  2. {
  3. var doc = (from p in dbContext.Project.Where(u => u.id == input.id)
  4. select new
  5. {
  6. 项目名称 = p.mingcheng,
  7. 项目状态 = p.zhuangtai,
  8. 项目内容 = p.neirong,
  9. 项目类型 = p.leixing,
  10. 添加时间 = p.createTime
  11. }).FirstOrDefault();
  12. string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx";
  13. string file = localPath + fileName;
  14. WordTool.writeWordFile(doc,doc.项目名称, file);
  15. return ReturnNode.ReturnSuccess(serverPath+ fileName);
  16. }

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/120361392

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。