c# EF导出到word

举报
清雨小竹 发表于 2022/09/25 03:33:54 2022/09/25
985 0 0
【摘要】 引用库: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 


      using Spire.Doc;
      using Spire.Doc.Documents;
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Drawing;
      using System.Linq;
      using System.Web;
      namespace YFAPICommon.Libs
      {
         public class WordTool
          {
             public static void writeWordFile<T>(T neirongData,string title,string path)
              {
                 //创建文档
                  Document doc = new Document();
                 //标题落样式
                  ParagraphStyle style1 = new ParagraphStyle(doc);
                  style1.Name = "titleStyle";
                  style1.CharacterFormat.Bold = true;
                 //style1.CharacterFormat.TextColor = Color.Purple;
                  style1.CharacterFormat.FontName = "宋体";
                  style1.CharacterFormat.FontSize = 18;
                  doc.Styles.Add(style1);
                 //字段名段落样式
                  ParagraphStyle style2 = new ParagraphStyle(doc);
                  style2.Name = "zhutiStyle";
                  style2.CharacterFormat.FontName = "宋体";
                  style2.CharacterFormat.FontSize = 13;
                  style2.CharacterFormat.Bold = true;
                  doc.Styles.Add(style2);
                 //字段内容段落样式
                  ParagraphStyle style3 = new ParagraphStyle(doc);
                  style3.Name = "neirongStyle";
                  style3.CharacterFormat.FontName = "宋体";
                  style3.CharacterFormat.FontSize = 11;
                  doc.Styles.Add(style3);
                 //添加section
                  Section s = doc.AddSection();
                 //添加标题
                  Paragraph para1 = s.AddParagraph();
                  para1.AppendText(title);
                  para1.ApplyStyle("titleStyle");
                 //设置段落对齐方式
                  para1.Format.HorizontalAlignment = HorizontalAlignment.Center;
                 //设置段落缩进
                  para1.Format.AfterSpacing = 15;
                 //遍历neirongData对象字段内容
                  PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
                 object[] values = new object[properties.Count];
                 for (int j = 0; j < values.Length; j++)
                  {
                     var col = properties[j].Name;//字段名
                     object obj = properties[j].GetValue(neirongData);
                     var str = obj == null ? "" : obj.ToString();//字段内容
                     //字段名
                      Paragraph zhuti = s.AddParagraph();
                      zhuti.AppendText(col);
                      zhuti.Format.HorizontalAlignment = HorizontalAlignment.Justify;
                      zhuti.ApplyStyle("zhutiStyle");
                      zhuti.Format.FirstLineIndent = 10;
                      zhuti.Format.AfterSpacing = 15;
                     //字段内容
                      Paragraph neirong = s.AddParagraph();
                      neirong.AppendText(str);
                      neirong.Format.HorizontalAlignment = HorizontalAlignment.Justify;
                      neirong.ApplyStyle("neirongStyle");
                      neirong.Format.FirstLineIndent = 10;
                      neirong.Format.AfterSpacing = 15;
                  }
                 //保存文档
                  doc.SaveToFile(path, FileFormat.Docx2013);
              }
          }
      }
  
 

调用


             public ReturnNode exportToWord(BaseAdminDetailInput input)
              {
                 var doc = (from p in dbContext.Project.Where(u => u.id == input.id)
                            select new
                             {
                                 项目名称 = p.mingcheng,
                                 项目状态 = p.zhuangtai,
                                 项目内容 = p.neirong,
                                 项目类型 = p.leixing,
                                 添加时间 = p.createTime
                             }).FirstOrDefault();
                 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx";
                 string file = localPath + fileName;
                  WordTool.writeWordFile(doc,doc.项目名称, file);
                 return ReturnNode.ReturnSuccess(serverPath+ fileName);
              }
  
 

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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