前言

本文主要介绍C#使用标签替换的方法导出数据,导出的数据模板使用Word文档。

模板建立

首先创建一个Word文档,然后建立一个基础模板。然后将上方菜单切换到插入菜单。

然后在想填充数据的地方添加书签,如下图,光标在年的前方,点击上方的书签按钮。

书签全部添加完如下图所示:

书签默认是看不到的,我们可以打开文件下的选项页面,然后在视图里勾选书签选项,让书签显示出来,如下图:

勾选后,书签位置会有一个竖线显示,结果如下图所示:

代码实现

新建一个项目WordExport。

然后Nuget添加引用Microsoft.Office.Interop.Word。

然后在页面里添加一个按钮,然后在点击事件里实现如下代码:

private void Button_Click(object sender, RoutedEventArgs e)
{try{ string wordTemplatePath = System.Windows.Forms.Application.StartupPath + @"\Word模板.docx";if (File.Exists(wordTemplatePath)){System.Windows.Forms.FolderBrowserDialog dirDialog = new System.Windows.Forms.FolderBrowserDialog();dirDialog.ShowDialog();if (dirDialog.SelectedPath != string.Empty){string newFileName = dirDialog.SelectedPath + @"\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx";Dictionary<string, string> wordLableList = new Dictionary<string, string>();wordLableList.Add("年", "2021");wordLableList.Add("月", "9");wordLableList.Add("日", "18");wordLableList.Add("星期", "六");wordLableList.Add("标题", "Word导出数据");wordLableList.Add("内容", "我是内容——Kiba518");
​Export(wordTemplatePath, newFileName, wordLableList);MessageBox.Show("导出成功!");}else{MessageBox.Show("请选择导出位置");} }else{ MessageBox.Show("Word模板文件不存在!"); } }catch (Exception Ex){MessageBox.Show(Ex.ToString());return;}
}
public static void Export(string wordTemplatePath, string newFileName, Dictionary<string, string> wordLableList)
{  Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();string TemplateFile = wordTemplatePath;File.Copy(TemplateFile, newFileName);_Document doc = new Document();object obj_NewFileName = newFileName;object obj_Visible = false;object obj_ReadOnly = false;object obj_missing = System.Reflection.Missing.Value;doc = app.Documents.Open(ref obj_NewFileName, ref obj_missing, ref obj_ReadOnly, ref obj_missing,ref obj_missing, ref obj_missing, ref obj_missing, ref obj_missing,ref obj_missing, ref obj_missing, ref obj_missing, ref obj_Visible,ref obj_missing, ref obj_missing, ref obj_missing,ref obj_missing);doc.Activate();
​if (wordLableList.Count > 0){object what = WdGoToItem.wdGoToBookmark; foreach (var item in wordLableList){object lableName = item.Key;if (doc.Bookmarks.Exists(item.Key)){doc.ActiveWindow.Selection.GoTo(ref what, ref obj_missing, ref obj_missing, ref lableName);//光标移动书签的位置doc.ActiveWindow.Selection.TypeText(item.Value);//在书签处插入的内容 doc.ActiveWindow.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;//设置插入内容的Alignment}  }}
​object obj_IsSave = true;doc.Close(ref obj_IsSave, ref obj_missing, ref obj_missing);
​
}

代码里我们模拟了一个标签要替换的内容字典,然后调用Microsoft.Office.Interop.Word命名空间下的类,实现对Word模板的书签的替换。

运行项目,如下图:

点击导出按钮,导出Word文档如下:

----------------------------------------------------------------------------------------------------

到此,C#导出数据—使用Word模板就已经介绍完了。

代码已经传到Github上了,欢迎大家下载。

Github地址: https://github.com/kiba518/WordExport

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

C#导出数据—使用Word模板 - kiba518 - 博客园

C#导出数据—使用Word模板相关推荐

  1. Java导出数据到Word模板中

    Java导出数据到Word模板. 前言 网上的方案 需求介绍 模板 简介 使用体验 poi-tl Freemarker 操作步骤 总结 前言 相信很多人都会遇到Java导出的业务,Java导出主要有导 ...

  2. java poi实现word导出(包括word模板的使用、复制表格、复制行、插入图片的使用)

    java poi实现数据的word导出(包括word模板的使用.复制表格.复制行.插入图片的使用) 1.实现的效果 实现病人基本信息.多条病历数据.多项检查项图片的动态插入(网络图片) 2.模板 把w ...

  3. python 批量打印文档_使用python将Excel数据填充Word模板并生成Word

    [项目需求] Excel中有一万多条学生学平险数据,需要给每位学生打印购买回执单,回执单包括学生姓名,身份证号,学校等信息,目前只能从Excel拷贝数据到Word模板中,然后打印,效率及其低下,寻求帮 ...

  4. java 导出word 带格式_java 导出数据为word文档(保持模板格式)

    导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换  如  aaaaa ...

  5. poi导出数据到word,带图片且图片数量不确定(能确定数量范围,这里是3-20张)

    注:有更好解决方法,参考:https://blog.csdn.net/m0_49605579/article/details/122583318 1.导入依赖 maven版: <dependen ...

  6. 图片复制word java_java poi实现word导出(包括word模板的使用、复制表格、复制行、插入图片的使用)...

    java poi实现数据的word导出(包括word模板的使用.复制表格.复制行.插入图片的使用) 1.实现的效果 实现病人基本信息.多条病历数据.多项检查项图片的动态插入(网络图片) 2.模板 把w ...

  7. java word导出表格_Java Word模板导出包含表格单元格合并

    java通过freemarker导出word循环合并表格单元格 本文主要讲解通过freemarker模板引擎来导出word,并且在word中包含表格的合并部分需要循环生成. 一.Java需要通过模板导 ...

  8. java导出数据到word文档中

    1.功能概述: web项目中,在html文件点击下载word文件,后台获取要输出的数据再导出到word文档中 2. 操作步骤: (1).新建word模板,凡是需要填充的数据用${xxxx},编辑好wo ...

  9. NPOI导出数据到Word

    以前的项目都是导出数据到Excel中,这个对于NPOI来说,技术是比较成熟的,但是导出到Word的,就差一些. 刚好手头的项目需要导出一些数据到Word中,基于对NPOI导出到Word的认知是一片黑, ...

  10. Java导出Excel模板,导出数据到指定模板,通过模板导入数据(一)

    本文章主要是介绍阿里巴巴的easyexcel的使用 1. 首先需要我们导入easyexcel的依赖包 <!-- alibaba/easyexcel 使用高版本,低版本string接收数字丢小数位 ...

最新文章

  1. CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli
  2. 《分布式系统:概念与设计》一1.6 实例研究:万维网
  3. MathML + MathJax在网页中插入公式
  4. Cpp / checked_delete 原理
  5. 【转载】请问Silverlight 获取客户端网卡mac码
  6. php text留言本,PHP+TEXT留言本(五)
  7. 如何接触到最新的前端动态、最前沿的前端技术
  8. C Looooops POJ - 2115
  9. Matlab停在载入界面,试图在Matlab用户界面中实现保存/加载对象功能时遇到了困难...
  10. linux qt自带例子无法,在Qt Creator中,错过了一些例子
  11. swagger整合springMVC
  12. 给扔物线 HenCoder Plus 学员的一次分享文字版
  13. 局域网内如何实现远程桌面控制
  14. 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
  15. 利用Eigen库实现最小二乘拟合平面
  16. Windowed reading and writing
  17. 【自媒体营销神器】一键自动下载短视频并分发至长视频平台脚本开源展示
  18. JVM源码分析之Attach机制实现完全解读
  19. 基于Openfire Smack开发即时通讯应用、搭建Openfire服务器(一)
  20. places2 数据集 | Data of Places365-Standard 256x256 数据分享| 场景识别数据集 | 【有效整理】|

热门文章

  1. word自己新建样式,怎么加入目录?
  2. 我奋斗十八年不是为了和你一起喝咖啡!
  3. MySQL5.6 community从下载到安装
  4. R语言卡方检验最全总结
  5. Excel VBA Dictionary excel vba 字典大全
  6. php获取m3u8的地址,如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例...
  7. Maven子父工程依赖配置,小白也能看得懂
  8. scrapy运行报错: Overridden settings XXX
  9. py之基于分块运动补偿的视频压缩
  10. excel筛选排序从小到大_excel多条件筛选函数 用Excel函数实现排序与筛选的方法...