上篇:【C#】C#使用Microsoft.Office.Interop.Word操作Word文档,替换文本
Word模板:
代码:
try
{
Application app = new Application();
string templetFileName = @"E:\BT\Test3.docx";
string newFileName = $@"E:\BT\Test{DateTime.Now.ToString("yyyyMMddHHmmss")}.docx";
//File.Copy(templetFileName, newFileName);
object oMissing = System.Reflection.Missing.Value;
object replace = WdReplace.wdReplaceAll;
//object objNewFileName = newFileName;
//Document doc = app.Documents.Open(ref objNewFileName,
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
Document doc = app.Documents.Open(templetFileName);
Dictionary<string, string> dicDatas = new Dictionary<string, string>()
{
{ "{姓名}","Bob" },{ "{年龄}","18" },{ "{身份}","学生" }
};
foreach (var item in dicDatas)
{
app.Selection.Find.ClearFormatting();
app.Selection.Find.Replacement.ClearFormatting();
app.Selection.Find.Text = item.Key;
app.Selection.Find.Replacement.Text = item.Value;
app.Selection.Find.Execute(
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref replace, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);
}
//获取表格,索引从1开始
Table table = doc.Tables[1];
object Range = table.Cell(4, 1).Range;
//居中显示
table.Cell(4, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
string picFileName = @"E:\BT\pic.png";
object LinkToFile = false;
object SaveWithDocument = true;
doc.Application.ActiveDocument.InlineShapes.AddPicture(picFileName, ref LinkToFile, ref SaveWithDocument, ref Range);
doc.Application.ActiveDocument.InlineShapes[1].Width = 300;//图片宽度
doc.Application.ActiveDocument.InlineShapes[1].Height = 180;//图片高度
//doc.Save();
doc.SaveAs2(newFileName);
//doc.Close(ref oMissing, ref oMissing, ref oMissing);
//app.Quit(ref oMissing, ref oMissing, ref oMissing);
doc.Close();
app.Quit();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Success");
Console.ReadKey();
效果:
参考: