设计了一个Word文档批量生成小工具软件

python办公自动化之批量生成docx——根据excel生成word、根据word生成excel python办公自动化之批量生成docx——根据excel生成word、根据word生成excel 一、从excel读取 二、写入docx 三、批量生成docx 四、反向操作,根据word生成excel 阅读详情
AI摘要

博主为朋友开发了一个文档自动生成小工具,可批量替换Word文档模板中设定标签为Excel表指定内容。该工具在VS2017下用C#和WPF实现,介绍了Excel总表格式、文档模板处理方式及操作步骤,还给出软件下载地址及各版本更新内容。

最近,因朋友工作需要帮他开发了一个文档自动生成的小工具软件,即批量替换Word文档模板中设定标签为指定的内容。Word文档模板为事先已经排版好的报表、公文等文件,但留下部分内容需要更改,将该内容设定为一个标签(如[申请人]),然后用Excel表中该标签指定的内容进行替换。如只替换单个文件手动修改即可,用该软件意义不大,但要修改上百个文档,该软件的作用就体现出来了。
该软件是在Visual Studio 2017 Community下用C#和WPF设计实现的,操作Excel和Word文档用微软自己的Mircrosoft.Office.Interop.Excel和Mircrosoft.Office.Interop.Word组件。主界面如下:
软件运行主界面
其中:
1、Excel总表格式为N行、M列数据。其中第一行为标签名,第一列为要创建的目标文件夹名,其余内容为不同文件夹下将文档模板中出现的标签名替换成的内容,其内容样式如下:
这里写图片描述

注意:子文件夹可以是需处理的文件号
2、文档模板是指要处理的文档报表、证明等Word文件,文件内容中有部分标签需要用Excel总表中相关内容进行替换,替换后的内容另存到Excel总表中第一列表示的目标文件夹中,文件名为《目标文件名+文档模板文件名》。如以下报表:
文档模板样式
3、操作步骤:
第一步:选择起始文件目录,目标文件夹将作为起始文件目录的子目录;
第二步:选择Excel总表;
第三步:添加文档模板(可添加多个文档模板);
第四步:选择要创建的文件夹(即要处理的文件号),可多选;
第五步:以上四步操作完成后,即可点击《批量处理》进行文档的自动替换生成。

设计该软件的关键时如何操作Excel和Word文当,现列出其主要代码,操作Excel文档的主要代码如下:

           //打开Excel总表
            //创建1个工作簿,相当于1个Excel文件
            //Excel的文档结构是 Workbook->Worksheet(1个Workbook可以包含多个Worksheet)
            Excel.Application excel = new Excel.Application();
            try
            {
                excel.Visible = false;
                excel.DisplayAlerts = false;
                Excel.Workbook wb = null;
                wb = excel.Workbooks.Open(dialog.FileName);
                Excel.Range rng2 = null;
                Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1]; //索引从1开始 
                try
                {

                    int rowCount = 0;//有效行,索引从1开始
                    int colCount = 0;//有效列,索引从1开始
                    rowCount = ws.UsedRange.Rows.Count;//赋值有效行
                    colCount = ws.UsedRange.Columns.Count;//赋值有效列
                    excelMarkList.Clear();
                    excelContentList.Clear();
                    LstDirGen.Items.Clear();
                    for (int i = 1; i <= colCount; i++)
                    {
                        rng2 = (Excel.Range)ws.Cells[1, i];
                        excelMarkList.Add(rng2.Value2);
                    }
                    for (int i = 2; i <= rowCount; i++)
                    {
                        //tmpList.Clear();
                        List<string> tmpList = new List<string>();
                        for (int j = 1; j <= colCount; j++)
                        {
                            rng2 = (Excel.Range)ws.Cells[i, j];
                            if (j == 1)
                            {
                                //将第一列加到列表控件中 
                                LstDirGen.Items.Add(rng2.Value2);
                            }
                            tmpList.Add(rng2.Value2);
                        }
                        excelContentList.Add(tmpList);
                    }
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
                finally
                {
                    if (wb != null) wb.Close();
                    if (ws != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
                        ws = null;
                    }
                    if (rng2 != null)
                    {
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(rng2);
                        rng2 = null;
                    }
                    if (excel != null)
                    {
                        excel.Workbooks.Close();
                        excel.Quit();
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
            finally
            {
                if (excel != null)
                {
                    excel.Workbooks.Close();
                    excel.Quit();
                }

            }

操作Word文档的主要代码如下:

            MSWord.Application app = null;
            MSWord.Document doc = null;
            object oMissing = System.Reflection.Missing.Value;
            object replace = MSWord.WdReplace.wdReplaceAll;
            app = new MSWord.Application();//创建word应用程序
            try
            {
                int inc = 0;
                for (int i = 0; i < selectItemsIndex.Count; i++)
                {
                    //创建子目录
                    string tmpDir = initPath + "/" + selectDirList[i];
                    if (!Directory.Exists(tmpDir))
                    {
                        Directory.CreateDirectory(tmpDir);
                    }
                    //模板文档循环

                    foreach (string docFile in docList)
                    {
                        string dstFile = initPath + "/" + selectDirList[i] + "/" +
                           selectDirList[i] + Path.GetFileName(docFile);
                        //拷贝文件
                        File.Copy(docFile, dstFile, true);
                        object fileName = (dstFile);//模板文件
                                                    //打开模板文件                            
                        doc = app.Documents.Open(ref fileName,
                        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);

                        for (int j = 0; j < excelMarkList.Count; j++)
                        {
                            string strOldText = excelMarkList[j];
                            string strNewText = excelContentList[selectItemsIndex[i]][j];
                            doc.Content.Find.Text = strOldText;
                            object FindText, ReplaceWith, Replace;// 
                            object MissingValue = Type.Missing;
                            FindText = strOldText;//要查找的文本 
                            ReplaceWith = strNewText;//替换文本 
                            Replace = MSWord.WdReplace.wdReplaceAll;
                            doc.Content.Find.ClearFormatting();//移除Find的搜索文本和段落格式设置
                            doc.Content.Find.Execute(
                            ref FindText, ref MissingValue,
                            ref MissingValue, ref MissingValue,
                            ref MissingValue, ref MissingValue,
                            ref MissingValue, ref MissingValue, ref MissingValue,
                            ref ReplaceWith, ref Replace,
                            ref MissingValue, ref MissingValue,
                            ref MissingValue, ref MissingValue);
                        }

                        doc.Close(MSWord.WdSaveOptions.wdSaveChanges);
                        bgworker.ReportProgress(++inc);
                        dspOkFile = dstFile;
                    }

                }
                bgworker.CancelAsync();
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
            finally
            {
                //关闭wordApp组件对象 
                app.Quit();
                app = null;

            }

编译好的软件放在百度网盘上,有兴趣的朋友可以下载使用(修改以适应Office2007及以上版本文档处理_20180922)。
软件下载地址:https://pan.baidu.com/s/1V0O9GnRw44lXOiu0uT3tGw
最近有读者反应打开Excel总表出错,经测试发现是软件不能正确识别日期格式单元造成的,现已修改(Build20181117),请下载以下最新版(老用户也可以下载后进行升级)。
软件下载地址:AutoDocGenSetUp20181117
最近应读者建议,增加对页眉、页脚及文本框内文本的替换,请下载以下最新版(老用户也可以下载后进行升级)。
软件下载地址:AutoDocGenSetUp20181228
最近应网友建议,增加对正文、页眉、页脚及文本框内长文档(替换内容大于255个字符)的替换,感谢网友提供的参考文章:阅读该文章。请下载以下最新版(老用户也可以下载后进行升级)。
最新软件下载地址:AutoDocGenSetup20190125
最近应网友强烈建议,增加Excel总表内容转置功能(即第一列为标签),同时增加选择替换页眉、页脚中标签文本功能。请下载以下最新版本(老用户也可以下载升级)。
最新软件下载地址:AutoDocGenSetup20190422
提取码:rz22
最近应网友建议,将生成的多份文档放到一个文件夹内,且将文件命名为《文档模板文件名+目标文件名》,现已修改。请下载以下最新版本(老用户也可以下载升级)。
最新软件下载地址:AutoDocGenSetup20190824

Word文档批量生成工具分享 Excel的数据记录可以轻松批量生成Word文档了。 使用标准的excel数据表+单据模板word文档轻松搞定,下面给大家介绍个简单的方法。以准考证模板为例: 第一步:模板及数据文件准备: 第二步: 打开网站后https://www.qwendang.com,首先选择需要导入的excel数据文件(不明白的可以下载模板例子) 第三步:导入word模板文件 可以是任意版式的word文件如准考证、成绩单、通知单、奖状、名牌、邀请函、工作证、出入证等等,word模板文件中需要用excle数据填充时则使用{数... 阅读详情

相关推荐

教学:如何根据excel的内容批量生成word?如何根据word模板批量根据表格数据生成word文档,基于WPF的实现方式

在实际工作中,经常会遇到需要根据表格中的数据批量生成具有固定格式文档的情况。比如,学校需要根据学生成绩表批量生成每个学生的成绩单;企业需要根据客户信息表批量生成合同、报价单等。借助 WPF 应用程序,用户能够通过直观的界面,将 Excel 表格中的数据与 Word 模板相结合,实现批量生成 Word 文档的功能,从而提高工作效率。

bbyn24955的博客 839

word文档批量生成工具(附免费软件)(按Excel表格内容自动替换内容生成文档)

要实现批量生成word文档的功能,其难度其实非常小,在程序实现层面上可以直接拆解为:读取xlsx文档的内容本人实现的工具将xlsx文档(Excel文档)的第一行内容定义为word文档中需要被替换的内容,后面每一行对应的内容则为要替换的内容。也就是第一行每一列的内容都会被后面一行同列的内容替换,然后生成一个新的word文档。这一部分的技术细节可见OpenXML库(office文档读写库)的安装这篇文章。识别word文档中的特定字段并将其替换为目标字段。

weixinhum 6794

批量转换Word文档至网页的实用软件

将转换后的HTML文档集成到现有网站的内容管理系统(CMS)中,是提高内容管理效率的关键。许多现代CMS,如WordPress、Joomla和Drupal,都提供了相应的插件来实现这一功能。以WordPress为例,集成HTML文档可以通过以下步骤完成:安装插件:在WordPress后台搜索并安装支持HTML文档上传和显示的插件,如“HTML Widget”或“Advanced HTML Editor Widget”。配置插件:根据插件的设置,配置上传和显示HTML文档的选项。

weixin_42575505的博客 986

Word批量生成软件

如果Word文件模板固定,只是要素信息不同,则可以使用本软件批量生成Word文件......

TechingEd 5684

XML模板与Word的数据驱动文档生成

本文还有配套的精品资源,点击获取 简介:XML模板导入Word技术利用XML数据和预设Word模板批量生成结构化文档,适用于自动化报告、合同生成等。介绍了XML标记语言、Word模板设计,以及如何结合使用它们来填充数据。提供了数据文件、模板文件、VBA宏以及使用指导,帮助用户实现文档自动化。 1. XML基本概念介绍 1.1 XML定义与重要性 可扩展标记...

weixin_28736145的博客 1694

Word邮件合并批量生成个性化Word文件教程

在现代办公环境中,定制化通信变得日益重要。Word的邮件合并功能允许用户创建和发送批量个性化的文档,例如信函、邮件、标签和证书。它有效地结合了Word的文本处理能力和数据源(如Excel表格或数据库)中的信息,以自动化批量生成定制文档的过程。邮件合并功能不仅仅局限于简单的文本替换,它还可以根据每个收件人的特定信息自动调整文档内容,包括但不限于姓名、地址和定制的问候语等。本章将介绍邮件合并的概念、其在实际工作中的应用,以及它如何简化和加速日常办公任务。

weixin_42524864的博客 894

使用Python根据excel中数据批量生成word文件(word文件填空)

有时候需要根据excel中的数据生成多个word文件,比如一行数据生成一个文件,这些文件大部分内容是一样的,只有个别地方不一样,像姓名、成绩等,传统方法是拷贝粘贴,但数据量大的话就太麻烦了,为此编程实现自动化。 基本思想是建立一个word模板文件,输入固定的内容,包括文字、图片、页眉页脚等等。在需要填空的地方插入标签并记住标签名,存为模板文件,拷贝至指定目录,指定目录中同时还有excel数据文件。在同样的指定目录新建Python程序,程序打开excel文件,取数据,针对每一行数据,根据模板新...

zw010101的专栏 1万+

DocGen:通用文档生成器

文档生成器 通用文档生成器

深入分析:如何实现Word文档的批量生成与合并

摘要:本文探讨了Word文档批量生成与合并的自动化技术,以解决企业日常运营中重复性文档处理效率低下的问题。文章分析了传统邮件合并方法的局限性,介绍了专业工具Q文档的四大核心功能:数据自动填充、文件智能命名、图片/二维码插入和文档批量合并。通过物业费催缴通知单的案例,展示了Q文档如何实现从数据导入到最终文档输出的全流程自动化处理。研究表明,采用自动化文档生成技术可显著提升工作效率,降低人工错误率,推动文档管理向智能化方向发展。

专注于企业文档自动化与批量生成实践,分享 Word、Excel、PDF 等办公场景下的模板驱动、数据处理与批量生成技巧,帮助技术人员和办公管理者提升效率与规范化水平。 1200

批量word文件内容替换工具 v1.0 单文件版.rar

批量word文件内容替换工具 v1.0 单文件版.rar

Notepad++ XML Tools插件:手把手教你格式化混乱XML与一键语法检查(保姆级教程)

本文详细介绍了如何使用Notepad++的XML Tools插件格式化混乱的XML文件并进行一键语法检查。通过插件安装、格式化实战和语法排错的完整流程,帮助开发者高效处理XML数据,提升API通信和数据存储的工作效率。特别适合需要快速验证和整理XML配置的开发人员。

weixin_42619742的博客 324

java生成word文档

最近工作需要从数据库查询数据,代码生成word文档,便在网上查询了一下办法。之前类似的工作也曾经做过,当时是在word模板中设置标记,在代码中填充标记。当前网络上简便的方法也是类似,word文档不是凭空生成的,需要先设计一个word模板,在文档中需要从数据库取值的地方,用${参数名}代替(如图一)。 java代码生成Word文档示例 下面提一下主角,freemarker,一个基于模板和源数据来生...

Activiti工作流 1万+

Springer期刊LaTeX模板中参考文献格式选择与编译错误的快速修复指南

本文针对Springer期刊LaTeX模板中参考文献编译后显示问号的常见问题,提供了快速修复指南。核心在于正确选择并配置与期刊匹配的参考文献格式文件(.bst),并执行标准的四步编译流程。文章详细解释了问题根源,并给出了从查找正确.bst文件到修改代码、执行编译的完整解决方案,帮助作者高效解决投稿中的技术障碍。

weixin_29266007的博客 401

Java生成word文档

用Java生成生成word生成word思路编辑好需要使用的word文档Java代码层编写生成后的文档如下图 生成word思路 用WPS或者office编辑好word的样式,然后另存为word xml文档,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Docx。 编辑好需要使用的word文档 1、把需要注入的信息换成变量名称,比如公司名称用${data1}表示,全部替换后的格式如下图所示 2、替换完成后另存为word xml格式的文档,如下图 3、生成后更改xm

Coke的博客 1万+

VS Code + ESP-IDF:离线环境配置与示例工程编译全指南

本文详细介绍了在VS Code中离线配置ESP-IDF开发环境的完整流程。针对国内开发者常遇到的网络问题,指南提供了从Python环境准备、获取离线安装包、运行安装器到VS Code插件配置与示例工程编译的全套解决方案,确保环境搭建稳定、可控且高效。

weixin_28842367的博客 403

UMI刷盘机器人代码实战:从SLAM到Diffusion Policy的完整部署流程

本文详细解析了UMI(Universal Manipulation Interface)刷盘机器人从数据准备到真实部署的完整实战流程。通过SLAM处理视频数据生成三维轨迹,并训练Diffusion Policy模型,最终将策略部署到UR5机械臂与WSG50夹爪上,实现从模仿学习到物理执行的闭环。

weixin_29042035的博客 461

批量替换多个Word文档多处内容小工具

批量替换多个Word文档多处内容小工具 【下载地址】批量替换多个Word文档多处内容小工具 这款开源的Word文档批量替换工具,专为提升办公效率而设计。它能够同时处理多个文档,支持对文档中的多处内容进行快速替换,包括表格内的数据。无论是批量更新合同条款,还是统一调整报告格式,这款工具都能轻松应对。操作简单,只需几步即可完...

gitblog_06784的博客 1005

gesp c++ 五级知识点

gesp c++ 五级知识点

MMD.然大大 2009

springboot下生成复杂word文档方案 在Word软件里面制作模板

在复杂word文档场景下,使用模板引擎是比POI、easypoi更优的解决方案

wangxudongx的专栏 5077

【实战项目开发技术分享】ROS1.0、ROS 2.0和CyberRT开源通信框架对比

随着机器人和自动驾驶技术的飞速发展,开源通信框架在机器人、自动驾驶行业扮演着重要的角色。ROS1.0是一个广泛应用于机器人领域的开源框架,ROS 2.0是其改进版本,而CyberRT是Baidu Apollo自动驾驶平台的通信框架。ROS和ROS 2.0都注重灵活性和共享性,适用于各种机器人应用。CyberRT则专注于实时性和高性能,适用于自动驾驶等对实时性要求较高的场景。选择适合的框架取决于具体应用需求和开发者的偏好。

xiewf的博客 2万+

KNN算法

其原理是在给定的数据集中,根据某个距离度量方法,将测试数据与已知数据集中的所有数据进行距离计算,然后选取K个距离最近的数据作为测试数据的邻居,根据邻居的类别进行投票,将测试数据分类到得票最多的类别中。总之,KNN算法是一种简单而有效的分类方法,它不需要对数据进行训练,可以适用于多种数据类型和应用场景,并且可以通过调整K值或距离阈值等参数来控制算法的复杂度和性能。,KNN算法需要找到K个距离测试样本最近的训练样本,计算它们的类别,并将测试样本归入到得票最多的类别中。则取值为1,否则为0,表示邻居中属于类别。

优快云XXCQ的博客 2630

根据Excel数据自动生成Word文档:AI助力文档自动化的未来

本文探讨了利用Excel数据自动生成Word文档的两种方法:邮件合并和Q文档工具。邮件合并操作简单,适合批量生成信函、合同等基础文档,但在处理复杂格式时存在局限。Q文档则支持复杂排版和大规模文档生成,效率更高但学习成本略高。通过对比分析,文章指出邮件合并适用于简单文档需求,而Q文档更适合企业级复杂文档处理。选择合适的工具可显著提升文档生成效率,确保格式统一性。建议根据具体需求选用相应方案,其中Q文档在专业性和批量处理方面更具优势。

专注于企业文档自动化与批量生成实践,分享 Word、Excel、PDF 等办公场景下的模板驱动、数据处理与批量生成技巧,帮助技术人员和办公管理者提升效率与规范化水平。 1352

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

|~~~热爱生活、努力学习的小伙汁~~~| 2108

批量处理word文件内容_word文档批量处理大师

优秀的资源工具可以让你事半功倍!资源下载请回复“领取资源”自助领取。word文档批量处理大师软件精致,简单易用,针对性强,是特别针对Office办公软件中的Word文档进行批量处理的软件。可针对Word中的绝大多数功能进行批量操作,速度快,进行简单设置即可让计算机自动处理海量word文档,极大的提升了办公人员的工作效率解压替换文件即可该软件精美,易于使用且针对性强。它是用于在Of...

weixin_42516414的博客 1639

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

【项目需求】Excel中有一万多条学生学平险数据,需要给每位学生打印购买回执单,回执单包括学生姓名,身份证号,学校等信息,目前只能从Excel拷贝数据到Word模板中,然后打印,效率及其低下,寻求帮助。【解决方案】1、设计Word模板。 2、读取Excel中的数据,并按Word模板生成Word文件。 3、使用批量打印软件进行批量打印。 关键需要解决word模板如何设计,像数据一样,定义好字段,后期...

weixin_42511887的博客 2203

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

教学:如何根据excel的内容批量生成word?如何根据word模板批量根据表格数据生成word文档,基于wpf的变成实现

本文介绍了一个基于WPF的Word文档批量生成方案,通过Excel数据与Word模板结合实现自动化办公。系统包含文件选择、数据预览和进度显示等功能界面,采用Microsoft.Office.Interop.Word进行核心文档生成,支持书签替换和批量处理。文章详细说明了界面设计、数据模型、代码实现以及性能优化方法(如异步处理和内存管理),并对比了VBA、Python-docx等替代方案。该方案适用于需要批量生成格式化文档的教育、企业等场景,具有界面友好、格式控制精确等特点,但需依赖Office环境运行。

bbyn24955的博客 764

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

下一篇: LabVIEW操作INI文件读写数组和簇
mysolisoft
博客等级 码龄19年 99粉丝 11原创
评论 80
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值