通过模板导出word

C#通过模板导出Word的两种方法(超简单)

 

方法一:使用Office的组件

==使用该方法必须要安装Office==

1、制作Word模板

 
通过模板导出word
Word模板

 

在需要填充内容的地方增加标识符号,方便之后替换使用,例如 ==[项目名称]==,其中[]符号和中间的文字可根据个人情况进行修改。

到此模板已经制作完成,是不是很简单。

2、操作Word

2.1 引用Microsoft.Office.Interop.Word.dll

添加命名空间

using Word = Microsoft.Office.Interop.Word;

2.2 编码开始

string mubanFile = "模板.docx";
string templatePath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, mubanFile);
Dictionary<string, string> bookmarks = new Dictionary<string, string>();
var item=xxx;//数据源
//将数据与Word模板中的标签对应
bookmarks.Add("[姓名]", item.UserName);
bookmarks.Add("[性别]", item.Sex);
bookmarks.Add("[出生年月]", item.BirthDay);
bookmarks.Add("[民族]", item.Ethnic);
bookmarks.Add("[文化程度]", item.EducationalLevel);
bookmarks.Add("[详细地址]", item.Address);
bookmarks.Add("[电话]", item.Phone);  
string wordpath = outputPath +  "xx.docx";//导出word地址
string pdfpath = outputPath +  "xx.pdf";//导出pdf地址
GenerateWord(templatePath, wordpath, pdfpath, bookmarks);                          
/// <summary>
/// 根据word模板文件导出word/pdf文件
/// </summary>
/// <param name="templateFile">模板路径</param>
/// <param name="fileNameWord">导出文件名称</param>
/// <param name="fileNamePdf">pdf文件名称</param>
/// <param name="bookmarks">模板内书签集合</param>
public static void GenerateWord(string templateFile, string fileNameWord, string fileNamePdf, Dictionary<string, string> bookmarks)
{
      Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
      File.Copy(templateFile, fileNameWord, true);
      Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document();
      object Obj_FileName = fileNameWord;
      object Visible = false;
      object ReadOnly = false;
      object missing = System.Reflection.Missing.Value;
      object IsSave = true;
      object FileName = fileNamePdf;
      object FileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
      object LockComments = false;
      object AddToRecentFiles = true;
      object ReadOnlyRecommended = false;
      object EmbedTrueTypeFonts = false;
      object SaveNativePictureFormat = true;
      object SaveFormsData = false;
      object SaveAsAOCELetter = false;
      object Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingSimplifiedChineseGB18030;
      object InsertLineBreaks = false;
      object AllowSubstitutions = false;
      object LineEnding = Microsoft.Office.Interop.Word.WdLineEndingType.wdCRLF;
      object AddBiDiMarks = false;
      try
      {
            doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing, ref Visible, ref missing, ref missing, ref missing, ref missing);
            doc.Activate();
            foreach (string bookmarkName in bookmarks.Keys)
            {                
                string newstr;
                string newStrs;

                replace(doc, bookmarkName, bookmarks[bookmarkName]);//替换内容
                }
                //replace(doc, "hello", "shalv");
                //此处存储时,参数可选填,如需另外生成pdf,加入一个参数ref FileName,
                doc.SaveAs(ref FileName, ref FileFormat, ref LockComments,
                        ref missing, ref AddToRecentFiles, ref missing,
                        ref ReadOnlyRecommended, ref EmbedTrueTypeFonts,
                        ref SaveNativePictureFormat, ref SaveFormsData,
                        ref SaveAsAOCELetter, ref Encoding, ref InsertLineBreaks,
                        
上一篇:if控制


下一篇:IdentityServer4系列 | 授权码模式