前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#导出数据—使用Word模板

C#导出数据—使用Word模板

作者头像
冬夜先生
修改2021-09-22 14:23:39
1K0
修改2021-09-22 14:23:39
举报
文章被收录于专栏:csico

前言

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

模板建立

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

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

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

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

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

代码实现

新建一个项目WordExport。

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

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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677

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上了,欢迎大家下载。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档