C#导出数据—使用Word模板
前言
本文主要介绍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模板相关推荐
- Java导出数据到Word模板中
Java导出数据到Word模板. 前言 网上的方案 需求介绍 模板 简介 使用体验 poi-tl Freemarker 操作步骤 总结 前言 相信很多人都会遇到Java导出的业务,Java导出主要有导 ...
- java poi实现word导出(包括word模板的使用、复制表格、复制行、插入图片的使用)
java poi实现数据的word导出(包括word模板的使用.复制表格.复制行.插入图片的使用) 1.实现的效果 实现病人基本信息.多条病历数据.多项检查项图片的动态插入(网络图片) 2.模板 把w ...
- python 批量打印文档_使用python将Excel数据填充Word模板并生成Word
[项目需求] Excel中有一万多条学生学平险数据,需要给每位学生打印购买回执单,回执单包括学生姓名,身份证号,学校等信息,目前只能从Excel拷贝数据到Word模板中,然后打印,效率及其低下,寻求帮 ...
- java 导出word 带格式_java 导出数据为word文档(保持模板格式)
导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换 如 aaaaa ...
- poi导出数据到word,带图片且图片数量不确定(能确定数量范围,这里是3-20张)
注:有更好解决方法,参考:https://blog.csdn.net/m0_49605579/article/details/122583318 1.导入依赖 maven版: <dependen ...
- 图片复制word java_java poi实现word导出(包括word模板的使用、复制表格、复制行、插入图片的使用)...
java poi实现数据的word导出(包括word模板的使用.复制表格.复制行.插入图片的使用) 1.实现的效果 实现病人基本信息.多条病历数据.多项检查项图片的动态插入(网络图片) 2.模板 把w ...
- java word导出表格_Java Word模板导出包含表格单元格合并
java通过freemarker导出word循环合并表格单元格 本文主要讲解通过freemarker模板引擎来导出word,并且在word中包含表格的合并部分需要循环生成. 一.Java需要通过模板导 ...
- java导出数据到word文档中
1.功能概述: web项目中,在html文件点击下载word文件,后台获取要输出的数据再导出到word文档中 2. 操作步骤: (1).新建word模板,凡是需要填充的数据用${xxxx},编辑好wo ...
- NPOI导出数据到Word
以前的项目都是导出数据到Excel中,这个对于NPOI来说,技术是比较成熟的,但是导出到Word的,就差一些. 刚好手头的项目需要导出一些数据到Word中,基于对NPOI导出到Word的认知是一片黑, ...
- Java导出Excel模板,导出数据到指定模板,通过模板导入数据(一)
本文章主要是介绍阿里巴巴的easyexcel的使用 1. 首先需要我们导入easyexcel的依赖包 <!-- alibaba/easyexcel 使用高版本,低版本string接收数字丢小数位 ...
最新文章
- CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli
- 《分布式系统:概念与设计》一1.6 实例研究:万维网
- MathML + MathJax在网页中插入公式
- Cpp / checked_delete 原理
- 【转载】请问Silverlight 获取客户端网卡mac码
- php text留言本,PHP+TEXT留言本(五)
- 如何接触到最新的前端动态、最前沿的前端技术
- C Looooops POJ - 2115
- Matlab停在载入界面,试图在Matlab用户界面中实现保存/加载对象功能时遇到了困难...
- linux qt自带例子无法,在Qt Creator中,错过了一些例子
- swagger整合springMVC
- 给扔物线 HenCoder Plus 学员的一次分享文字版
- 局域网内如何实现远程桌面控制
- 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
- 利用Eigen库实现最小二乘拟合平面
- Windowed reading and writing
- 【自媒体营销神器】一键自动下载短视频并分发至长视频平台脚本开源展示
- JVM源码分析之Attach机制实现完全解读
- 基于Openfire Smack开发即时通讯应用、搭建Openfire服务器(一)
- places2 数据集 | Data of Places365-Standard 256x256 数据分享| 场景识别数据集 | 【有效整理】|
热门文章
- word自己新建样式,怎么加入目录?
- 我奋斗十八年不是为了和你一起喝咖啡!
- MySQL5.6 community从下载到安装
- R语言卡方检验最全总结
- Excel VBA Dictionary excel vba 字典大全
- php获取m3u8的地址,如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例...
- Maven子父工程依赖配置,小白也能看得懂
- scrapy运行报错: Overridden settings XXX
- py之基于分块运动补偿的视频压缩
- excel筛选排序从小到大_excel多条件筛选函数 用Excel函数实现排序与筛选的方法...