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