- A+
所属分类:.NET技术
C#通过模板导出Word的两种方法(超简单)
方法一:使用Office的组件
==使用该方法必须要安装Office==
1、制作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,