C#,WPF使用word模板导出word文档

使用word模板导出word文档,首先需要在word模板中插入书签:

根据创建的书签名和位置,将需要写入的内容插入到word文件中。

需要引用  Microsoft.Office.Interop.Word;在添加引用-程序集中搜索可以找到。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Telerik.Windows.Controls;

namespace LawsRegulationDate.LawenforceManagement.DocumentFile
{
    /// <summary>
    /// Interaction logic for HomePage.xaml
    /// </summary>
    public partial class HomePage
    {
        public HomePage()
        {
            InitializeComponent();
        }

        private void 行政执法首页_Click(object sender, RoutedEventArgs e)
        {
            //模板文件
            string urlstring = System.Windows.Forms.Application.StartupPath + "\\File\\WordTemplate\\行政执法案卷(首页).docx";
            if (string.IsNullOrEmpty(urlstring) || !File.Exists(urlstring))
            {
                Message_Box.Show("【行政执法案卷(首页)】模板不存在!");
                return;
            }
            else
            {
                string fileName = string.Empty;
                System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
                fbd.ShowDialog();
                if (fbd.SelectedPath != string.Empty)
                {
                    fileName = fbd.SelectedPath + "\\行政执法案卷(首页)" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx";
                    WordEstablish(urlstring, fileName);
                }
                else
                {
                    Message_Box.Show("选择导出位置");
                    return;
                }

            }
        }
        /// <summary>
        /// 调用生产方法
        /// </summary>
        /// <param name="urlstring">模板文件</param>
        /// <param name="fileName">新文件</param>
        public void WordEstablish(string urlstring, string fileName)
        {
            try
            {
                #region 声明参数
                Dictionary<string, string> DList = new Dictionary<string, string>();
                DList.Add("案由", 案由.Text);
                DList.Add("处理结果", 处理结果.Text);
                DList.Add("立案年", LAYear.Text);
                DList.Add("立案月", LAMonth.Text);
                DList.Add("立案日", LADay.Text);
                DList.Add("结案年", JAYear.Text);
                DList.Add("结案月", JAMonth.Text);
                DList.Add("结案日", JADay.Text);
                DList.Add("件", JianText.Text);
                DList.Add("页", YeText.Text);
                DList.Add("档案号", GDText.Text);
                DList.Add("承办人", CBText.Text);
                DList.Add("归档年", GDYear.Text);
                DList.Add("归档月", GDMonth.Text);
                DList.Add("归档日", GDDay.Text);
                DList.Add("保存期限", BCYear.Text);
                #endregion
                if (WordClass.ExportWord(urlstring, fileName, DList))
                {
                    MessageBox.Show("生成‘" + fileName + "‘成功!");
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.ToString());
                return;
            }
        }
    }
}

WordClass.cs类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.Collections.Generic;
using System.IO;
namespace LawsRegulationDate
{
    public class WordClass
    {
        /// <summary>
        /// 模板生成word
        /// </summary>
        /// <param name="templateFile">模板文件</param>
        /// <param name="fileName">新文件</param>
        /// <param name="myDictionary">参数数组</param>
        public static bool ExportWord(string templateFile, string fileName, Dictionary<string, string> myDictionary)
        {
            try
            {
                //生成word程序对象
                Word.Application app = new Word.Application();
                //模板文件
                string TemplateFile = templateFile;
                //模板文件拷贝到新文件
                File.Copy(TemplateFile, fileName);
                //生成documnet对象
                Word._Document doc = new Word.Document();
                object Obj_FileName = fileName;
                object Visible = false;
                object ReadOnly = false;
                object missing = System.Reflection.Missing.Value;
                //打开文件
                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();
                #region 声明参数
                if (myDictionary.Count > 0)
                {
                    object what = Word.WdGoToItem.wdGoToBookmark;
                    object WordMarkName;
                    foreach (var item in myDictionary)
                    {
                        WordMarkName = item.Key;
                        doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref WordMarkName);//光标转到书签的位置
                        doc.ActiveWindow.Selection.TypeText(item.Value);//插入的内容,插入位置是word模板中书签定位的位置
                        doc.ActiveWindow.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//设置当前定位书签位置插入内容的格式
                    }
                }
                #endregion
                //输出完毕后关闭doc对象
                object IsSave = true;
                doc.Close(ref IsSave, ref missing, ref missing);
                return true;
            }
            catch
            {

                return false;
            }
        }
    }
}
时间: 2025-01-16 12:01:44

C#,WPF使用word模板导出word文档的相关文章

利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

Net Core DocXCore 实现word模板导出

实际工作中,往往有这样的需求,需要导出word,还有各种各样的样式,于是有了word模板导出. 实现以下几个需求: 1.表单导出 2.表格导出 3.表单表格混合导出 4.实际用例测试 解决方案: 实现是基于NET Core 2.1 ,搜索了各个开源项目最终基于DocX这个开源库,当初实现时发现DocX作者并没有发布Core的版本,最后在Nuget搜索到DocXCore这个包,但是没有GitHub搜索到这个库. 上面还遇到一个坑爹的问题,系统在win运行没问题,一部署到centos导出就挂了,根据

Word 2010打开大文档时速度很慢的解决方法

这两天终于搞清楚了一个困扰了我很久的问题.我的Word 2010在打开很大的Word文档(如小组的硕士学位论文)时,经常发生速度慢甚至很长时间没有响应的问题.在师弟的提示下,终于找到一个折衷的解决方案: 其实是对中英文混合大文档拼写检查的问题,关闭拼写和语法检查就可以了,设置方法:点击"文件"--"选项"--"校对"--取消"在Word中更新拼写和语法时"下的所有对号.就可以顺利打开Word文档了. 另外,我们在英文的时候需要

word中怎样把文档里的中文以及中文字符全选?

word中怎样把文档里的中文以及中文字符全选? 参考: 百度 案例: 有个文档是中英文混杂的 现在需要把中文以及中文字符全部设置成别的颜色 应该怎样操作? 有80多页 别说让我一个一个的设置 以word2010为例操作步骤如下: 1.启动word,打开要操作的文档: 2.按ctrl+h快捷键打开查找和替换对话框,点击查找选项卡: 3.查找内容输入[!^1-^127],点击更多按钮,勾选下方选项使用通配符: 4.点击在以下项中查找,弹出菜单选择主文档: 5.效果如下图:

在.Net Core WebAPI下给Swagger增加导出离线文档功能

一丶前言 最近刚接触到Swagger,在github上下载了它的源码和demo学习了一遍,发现这个组件非常好用,不过不足的是它没有导出离线文档的功能,于是乎我就想给它加一个导出功能 Swagger Github开源地址 二丶思路 其实说白了api文档就是一个html静态页面,html可以转word或者pdf,那问题就变简单了. 1.想办法拿到swagger生成的api接口json数据. 2.将json转化为html. 3.将html转换成word或者pdf等文件. 三丶实现 1.首先我们要解决第

Java iText使用PDF模板生成PDF文档

我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档. 第一步:下载AdobeAcrobat DC,必须使用这个来制作from域. 第二步:使用AdobeAcrobat DC将Word导成PDF文档. 第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便: 添加水印的方法:使用AdobeAcrobat DC打开PDF文档,"工具"->"编辑PDF"->&qu

MyEclipse中导出javadoc文档

1.选中要生成文档的类或者项目→File→Export→Java→Javadoc. 2.在Javadoc command中选择JDK下对应的javadoc.exe:Select types for which Javadoc will be generated中为刚选择要生成doc的类或者项目,可以在这里修改:在Destination中为文档导出的路径. 3.在VM options中输入“-encoding utf-8 -charset utf-8”命令,设置编码格式,防止导出的文档出现乱码.

java导出pdf文档

java导出pdf文档,多是iText实现的,可以创建pdf文档,并向文档写入内容. 1 导入包:itext-2.0.6.jar       itext必须使用的包. iTextAsian.jar      向pdf写入中文必须的包. 2 代码: package com.exp.pdf; import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowa

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo