精华内容
下载资源
问答
  • word文档搜索关键内容
    千次阅读
    2019-04-26 17:34:32

    一、问题需求

    在开发的一个项目中,需要根据给定的文档模板,将数据库中的数据形成模板样式的pdf文件,刚开始使用的是itext创建table的方式创建生成pdf,后来在调试中发现使用itext创建的pdf的样式与模板差别很大,比如封面固定为一页,第二页的数据会显示在封面中,而且使用SetLeading也无法把控间距,后来想到了,使用Word模板,将需要替换的内容设置成固定的标签,然后将新的word转成pdf的样式

    开发使用的是VS2017,.NetCore的项目框架

    二、功能实现

    1、准备工作

    1)将Word模板中需要替换的内容,使用设定的标签代替,我这里使用的是{$UserName} 样式的标签,其中UserName是实体类中的字段名称

    2)Nuget包中搜索并安装DotNetCore.NPOI

    3)在相关的操作类中,添加引用

    using NPOI.OpenXmlFormats.Wordprocessing;
    using NPOI.XWPF.UserModel;

    2、实现的代码

    1)读取并解析word模板文档段落和table表格内容,以下代码是示例,可根据实际情况修改

    /// <summary>
    /// 生成word文档
    /// </summary>
    /// <param name="userInfo">用户信息</param>
    /// <param name="docTemplatePath">doc模板存放路径</param>
    public static void CreateDoc(UserInfo userInfo,string docTemplatePath)
    {
       if (File.Exists(docTemplatePath))
       {
          string newTempletePath ="D:\\UploadFiles\\PdfFiles\\";
          string newTempleteFileName = Guid.NewGuid().ToString() + ".docx";
          if (!Directory.Exists(newTempletePath))
          {
              Directory.CreateDirectory(newTempletePath);
          }
          string newTempleteFullPath = newTempletePath + newTempleteFileName;
          File.Copy(templetePath, newTempleteFullPath);//拷贝doc模板
           //读取Word模板
          FileStream fileStream = new FileStream(newTempleteFullPath, FileMode.Open, FileAccess.Read);
          XWPFDocument myDoc = new XWPFDocument(fileStream);
          //遍历段落,替换内容
          foreach (var para in myDoc.Paragraphs)
          {                        
             ReplaceKey(userInfo, para);           
          }
          //遍历table,替换单元格内容
          foreach(var table in myDoc.Tables)
          {
             foreach (var row in table.Rows)
             {
               foreach (var cell in row.GetTableCells())
               {
                  foreach (var para in cell.Paragraphs)
                  {
                    ReplaceKey(userInfo, para);
                  }
               }
             }
          }
          MemoryStream ms = new MemoryStream();
          myDoc.Write(ms);
          //保存修改后的文档
          // 把 byte[] 写入文件 
          FileStream fs = new FileStream("D:\\newDoctest.docx", FileMode.Create);
          BinaryWriter bw = new BinaryWriter(fs);
          bw.Write(ms.GetBuffer());
          bw.Close();
          fs.Close();
       }
    }

    2)模板内容替换实现方法代码

            /// <summary>
            /// word模板内容替换
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="etity">实体数据</param>
            /// <param name="para">段落</param>
            private static void ReplaceKey<T>(T etity, XWPFParagraph para)
            {
                Type entityType = typeof(T);
                PropertyInfo[] properties = entityType.GetProperties();
                string entityName = entityType.Name;//实体类名称
                string paratext = para.ParagraphText;
                var runs = para.Runs;
                string styleid = para.Style;
                string text = "";
                foreach(var run in runs)
                {
                  text = run.ToString();
                  foreach (var p in properties)
                  {
                     string propteryName = "{$" + p.Name + "}";//Word模板中设定的需要替换的标签
                     object value = p.GetValue(etity);
                     if (value == null)
                     {
                        value = "";
                     }
                     if (text.Contains(propteryName))
                     {
                        text = text.Replace(propteryName, value.ToString());
                     }
                     run.SetText(text);//替换标签文本(重要)
                  }
                }
             }

    3、注意事项

    NPOI操作word文档只可操作2003版的word,或者2007版的docx文档,如果是其他版本的word文档,在读取word模板文档时会出现Exception: Wrong Local header signature: 0xE011CFD0的错误,解决这个错误,只要将word文档另存为docx格式的就可以了

    更多相关内容
  •  Word文档搜索器能轻松批量搜索某个关键字的word文档,使用方法也非常简单:在关键了输入框中输入你要搜索的包含WORD文档标题的关键字,再设置要查找的路径范围,点击搜索,稍等几秒就有结果了,会列出出现这个...
  • 从而使得其他人可以迅速地搜索到相关记录 据说“人生苦短,我用python” 所以决定用python从docx文档中提取文件头的信息 然后把信息更新到一个xls电子表格中,像下面这样(直接po结果好了) 而且点击文件路径可以...
  • 今天小编就为大家分享一篇python实现替换word中的关键文字(使用通配符),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了nodejs实现一个word文档解析器的思路详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Word文档复制查找到的全部内容

    千次阅读 2021-07-09 16:32:55
    1.打开需要操作的word文档 2.单击查找选项 , 选择高级查找 3.单击更多>> 4.单击选择全部-->输入你要搜索内容-->然后单击选择主文档, 你需要搜索内容就全部显示出来了 5.快捷键 Ctrl+C ...

    1.打开需要操作的word文档

    2.单击查找选项 , 选择高级查找

    3.单击更多>>

     

     4.单击选择全部-->输入你要搜索的内容-->然后单击选择主文档,

        你需要搜索的内容就全部显示出来了

     

     5.快捷键 Ctrl+C

     

     

    展开全文
  • 这不是源代码,是通过C#在VS2010下实现的,可以说是个小工具,实现的功能是:打开某一文件下的所有word文档,然后设置一个或多个关键字,然后查找这些关键字是否在word中出现,并将word文档名和关键字保存在excel的...
  • 本贴关于创建word文档等基本的就不说了,主要是对打开的word文档进行操作,实现了以下主要功能: 主要功能: 1, 表格中定位插入图片 2, 表格中定位单元格填内容 3, doc文档中按行定位并写入文本 4, doc文档中按表格...
  • 准备工具:电脑,WPS软件1....4.在桌面功能页面中找到输入框,在输入框中重命名自己的文档(避免和已有文档重复)。5.重命名完毕后,在右侧找到保存选项,单击改选项即可将word文档保存文件到桌面...

    准备工具:电脑,WPS软件

    1.打开文档,在文档新建页面中找到上方文档名称选项,右键点击该选项进入功能页面。

    cfeac93f9763f3c725e00c73ca448389.png

    2.在功能页面中找到另存为选项,点击另存为选项进入另存为页面当中。

    80448b93543e08d3edb6daaaccca0411.png

    3.在另存为页面中找到桌面选项,点击桌面选项进入桌面功能页面当中。

    18fed625fd88da4cf2da958d0c098505.png

    4.在桌面功能页面中找到输入框,在输入框中重命名自己的文档(避免和已有文档重复)。

    4e85f0aa8c5d186fef81e3d419e544c4.png

    5.重命名完毕后,在右侧找到保存选项,单击改选项即可将word文档保存文件到桌面。

    7d252cebf86803e36c2750beff709ea5.png

    为什么我的桌面保存不了东西 excel word都不能保存到桌面 但是de盘就可以 就显示这个

    可能是用了非官方的修改版的系统安装后用户权限有问题,除了新建一个用户外(新建用户会导致一些个性设置重置比较麻烦),有一个比较简单的方法是把系统桌面文件夹改个路径,你先按

    cdf601251381b6abd891ef2406a837a8.png

    这个路径打开当前桌面所在文件夹路径,鼠标右键单击这个桌面文件夹

    33796db2fb329ad142efd52e41c527c1.png

    点击右键菜单中的“属性”,弹出下图窗口,点击“位置”选项卡,这页中把位置改到D盘或E盘,重启电脑,完毕。这样修改后,你就应该有权限将文件存到桌面了。

    742daf712a84373399fcc9d5ee335bc8.png

    另一个比较完善的方法是到msdn下载微软官方原版系统镜像来重新安装系统,而不要用第三方修改系统。

    word怎么保存到桌面

    word保存到桌面在保存时的位置选择为桌面就可以了。

    软件工具:Micfosoft Office word 2013、win10 151专业版。

    1、打开已有或者新建文档。

    2、点击菜单栏上的“文件”。

    15bca8ef1241cd874ca1f3c0758ac39a.png

    3、点击“另存为”。

    e5dfa661bd1165ded24c2787703993b4.png

    4、双击“计算机”。

    3cf39574d2d60bd3ad6ddb8224847a34.png

    5、在保存位置中选择“桌面”,然后点击保存即可。

    98d89eea4400e56905297a110513d8f1.png

    为什么我的桌面保存不了东西 excel word都不能保存到桌面 但是de盘就可以 就显示这个

    改变保存路径即可。

    方法如下:打开“工具”菜单下“选项”,在“选项”对话框中“文件位置”标签栏下,文件类型选为“文档”,再单击“修改”按钮,重新设置文档保存位置,完成后单击“确定”即可。

    在Word文档里面写的东西,保存在桌面上。但是找不到了怎么办?

    第一种可能:你直接点保存—确定,保存在我的文档里面了。去我的文档里找。

    第二种可能中病毒,被隐藏或者是自动删除了。这就没办法找回了。

    为什么我的word文件存在桌面找不到

    桌面文件不键了有很多原因,建议按以下方法逐一排查:

    一、看看是不是误删了。处理方法:找找回收站有没有该文件。

    二、如果没有,看看该文件是否被隐藏了试试点击我的电脑。

    处理方法:点击工具选项,点击文件文件夹选项,点击查看,选中显示所有文件和文件夹选上,点击应用,确定。

    三、如果还没有发现文件,建议使用系统搜索功能,搜索该文件名称。

    四、如果仍未找到,说明文件可能被彻底删除。这时候就需要使用专门的恢复软件,恢复被删除的文件。恢复类软件例如:文件恢复软件、删除恢复大师等,网上很多。不过强大的功能需要收费。

    五、电脑文件被顽固木马破坏,处理方法:

    下载“360系统急救箱”,已经安装了“360安全卫士”的朋友,直接打开“查杀木马”,“自定义扫描”的下面的“360系统急救箱”,点击它;

    【1】开始急救!急救完毕后,立即处理,重启!

    【2】开机后,“文件恢复区”,彻底删除文件!

    【3】“系统修复”,全选,立即修复!

    【关键】【4】网络修复,开始修复,重启电脑!

    【关键】【5】dll文件恢复,扫描一下,如果有丢失,添加恢复,没有就行了!

    2、用“360安全卫士”的“系统修复”,点“IE常用设置”,“修改主页”,“使用360安全网址导航”,点:“一键修复”!

    3、用“360安全卫士”的“扫描插件”,然后再点:“清理插件”,把“恶评插件”删除!

    4、再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,“全盘扫描”与“自定义扫描”,病毒木马,再点删除!重启电脑后,来到“隔离区”,点“彻底删除”!

    5、木马查杀,“全盘扫描”与“自定义扫描”,查杀到木马,立即处理!重启!“文件恢复区”,彻底删除!

    6、再不行,试试:金山急救箱,勾选“扩展扫描”,立即处理,重启电脑!7、再不行,试试:金山网盾,一键修复!

    8。实在不行,只能:一键还原或重装系统!

    为什么word文档只能保存到别的地方,却无法直接保存到桌面呢

    改变保存路径即可。

    方法如下:打开“工具”菜单下“选项”,在“选项”对话框中“文件位置”标签栏下,文件类型选为“文档”,再单击“修改”按钮,重新设置文档保存位置,完成后单击“确定”即可。

    1407bc0a742f6720e0c415e764680b48.png

    我的word文件保存到桌面,怎么桌面不是word样子?

    双击word图标,在word中打开。如果还不行,建议你重新下载(或者找一张光盘),重新安装。

    展开全文
  • 用python批量处理word文档

    千次阅读 2021-01-29 22:15:58
    应我家领导要求,开发一个word文档批处理脚本,涉及word文档、excel表格、文件存取、排序与索引、简单GUI等内容,前期针对各分项功能实现写了几篇小文章,现在将总体思路记录一下,作为这个系列的完结篇。...

    应我家领导要求,开发一个word文档批处理脚本,涉及word文档、excel表格、文件存取、排序与索引、简单GUI等内容,前期针对各分项功能实现写了几篇小文章,现在将总体思路记录一下,作为这个系列的完结篇。

    由于针对目标文档进行了很多特定操作,源代码本身不具备通用性,下面主要精讲其中的关键部分。完整代码、示例文档详见:

    开发需求:

    素材为批量word文档集(docx):位于original文件夹中。文件名为“N.xxxx.docx”(N为数字、xxxx为文档标题)。(见附图)

    文件内容为各类新闻报道,排版为标题、正文内容(包括图片)、签名尾行(署名+日期)。(见附图)

    需实现的功能包括:

    建立文档清单,清单内容包括序号、署名、日期、标题。

    排序文档清单,署名+日期联合排序,署名按照指定的排序规则表排序(见附图)。

    筛选文档,从清单中筛选满足特定要求(比如日期范围)的文档,生成筛选后的清单,并从原始文档集中提取这些文档。

    修订文档,将文档重新排版(标题行+空一行+正文段落+签名尾行+空两行),并校订文档中的标点错误(英文标点误用、省略号不准确等)。

    合并文档,将筛选、修订后的文档合并为一个统一的文档,保持各子文档的排版格式不变。

    图形界面,正逢领导生日,所以除了好用,还要好看,传送门在此:爱coding:心形绘制的小改进:turtle模块

    6948e43441471bdc527e50ec39a8c828.png original文件夹示例

    7aa55ab396d4b64b3b16df2a92375330.png 文档内容示例

    dfcdfbdfd0f69d0d431384536903cac5.png 排序规则表.txt

    逻辑图设计:

    对程序主体逻辑梳理如下。

    b3bf9b81a34f38ea04da93dda59fb439.png

    关键代码实现:

    清单操作

    程序涉及的清单包括:default_database.xls(原始清单,如没有提供则需生成)、all_queued.xls(按照媒体、时间排序后的总清单)、screen_queued.xls(特定年份的清单)。为便于查看,这些清单都要求生成Excel表格。

    原始清单(如有)采用xlrd模块读取,所有清单生成则采用xlwt模块。xlrd、xlwt模块基本概念和涉及到的操作在另一篇文章中介绍:

    其中重复进行的操作,如excel表格生成(genXls())独立为函数,通过函数调用来实现复用,以减少代码量。

    其中比较重要的一点就是对时间格式的处理。日期相关操作采用datetime模块,时间格式转换采用time模块。

    word文档、excel表格中文本格式表示的日期:

    首先通过正则表达式搜索得到文本格式的日期datestr,然后识别日期分隔符(’/’, ‘-‘等),并采用time.strptime()从字符串中提取年月日数值,最后通过datetime.datetime()构造日期格式数据。

    date_pat = re.compile('\d{4}\D\d{1,2}\D\d{1,2}') # 日期格式的正则表达式YYYYxMMxDD

    ...

    sch = re.search(date_pat, para.text) #提取文本格式的日期

    if sch: #如匹配到日期

    datestr = para.text[sch.start() : sch.end()]

    split = []

    for char in datestr: #识别日期分隔符

    if char not in digit:

    split.append(char)

    y, m, d = time.strptime(datestr,

    '%Y' + '%s' % split[0] + '%m' + '%s' % split[1] + '%d')[0:3] #提取年月日数值

    date = datetime.datetime(y, m, d) #构造datetime日期格式

    excel表格中日期格式表示的日期:

    从excel中读取的日期是一个浮点数,需采用xlrd.xldate_as_datetime(cell,0)转为datetime.datetime日期格式。

    向excel写入日期时,通过ws.write(r, c, content, mf)中的mf(style实例)设置成excel日期格式。

    mf = xlwt.XFStyle()

    mf.num_format_str = 'yyyy/mm/dd' #设置日期格式为:年/月/日

    ws.write(r, c, content, mf)

    另外一点就是excel表格中的文档清单排序,包括按媒体(排序规则表.txt)和按日期进行排序。特别是按媒体名称排序,为避免前序操作改变了后续步骤的索引位置,采用倒序的冒泡法排序,具体方法见:

    文档操作

    文档操作包括:对单篇文档的文字、格式修订;多篇文档合成为一个总文档。

    文档操作整体采用docx模块,其中文字修订采用正则表达式来搜索(string、re模块)。docx模块基本概念和涉及到的操作在另一篇文章中介绍:

    其中重复进行的操作,如文档格式设置(setdocStyle())、文本内容修订(refText())独立为函数,通过函数调用来实现复用,以减少代码量。

    setdocStyle()直接调用可设置为默认格式(包括字体、字体大小、首行缩进、段前间距、段后间距、行距等),也可通过关键字参数修改格式。

    refText()可实现对所有文本内容的检查和修正,目前实现了中英文标点符号的修订、回引号缺失修正、省略号错误提示。

    word文档图片提取值得详细说明一下,图片提取采用了zipfile模块。

    大家知道docx模块可通过doc.inline_shapes提取所有内联图形,也即嵌入方式插入文档的图形。但是,其他方式(比如浮于文字上方、四周环绕等)的图片不会包括在doc.inline_shapes中,这些图片只能通过doc.paragraphs[n].runs[m].element.drawing_lst来识别。

    docx格式本质是xml文件的压缩包,将docx文档后缀名改为zip,然后解压缩,就可以得到如下图所示的内容,其中word文件夹为文档主要信息储存位置,该文件夹中的media文件夹即包括所有图片内容(按文档中的顺序命名)。

    d7d0a35deb495902ee16f30c5f7baf7c.png docx文档解压缩后的内容

    393797bcccb0e56ca04df49f849e97c4.png word文件夹打开后的内容

    因此,本文通过块中的drawing_lst来判断文档中是否有图片,对于有图片的文档,采用zipfile解压缩提取media文件夹中的所有图片。实例代码如下。

    # 指定用于提取图片的临时zip文件、文件夹

    temp_zip = 'temp.zip'

    temp_dir = 'temp'

    fig_unloaded = True #记录图片是否已经载入

    ...

    # doc.inline_shapes无法识别非嵌入式图片,故直接从段落块判定有无图

    if run.element.drawing_lst:

    if fig_unloaded: #如本doc还未载入图片,此处载入

    silence = shutil.copy(os.path.join(src_dir, doc_name), temp_zip)

    f = zipfile.ZipFile(temp_zip)

    for file in f.namelist():

    if file.startswith('word/media/image'):

    silence = f.extract(file, temp_dir)

    f.close()

    img_dir = os.path.split(silence)[0]

    img_list = os.listdir(img_dir) #所有图片路径的清单

    fig_unloaded = False #本文档图片已载入,不再重复载入

    ...

    # 临时文件清理

    if os.path.exists(temp_zip):

    os.remove(temp_zip)

    if os.path.exists(temp_dir):

    shutil.rmtree(temp_dir)

    图片插入word文档,则采用doc.paragraphs[n].runs[m].add_picture()完成,不再细讲。

    欢迎关注我的公众号(zz-icoding),以后将逐步整理成系列化的python学习资源。

    展开全文
  • 互联网+大学生创新创业大赛项目计划书word版本.pdf互联网+大学生创新创业大赛项目计划书word版本.pdf互联网+大学生创新创业大赛项目计划书word版本.pdf互联网+大学生创新创业大赛项目计划书word版本.pdf互联网+大学...
  • 设计了一个Word文档批量生成小工具软件

    万次阅读 多人点赞 2018-08-25 10:44:45
    最近,因工作需要开发了一个文档自动生成的小工具软件,即批量替换Word文档模板中设定标签为指定的内容Word文档模板为事先已经排版好的报表、公文等文件,但留下部分内容需要更改,将该内容设定为一个标签(如...
  • 导入Word文档

    千次阅读 2019-05-28 08:48:14
    开发工具与关键技术:Visual Studio 2015 导入Word文档 作者:袁何恩 撰写时间:2019年5月27日 今天,我要和大家分享的技术是导入word文档。 导入word文档是把word文档保存到临时的文件夹里,也就是Session里,是以...
  • java 根据模板文件生成word文档

    万次阅读 多人点赞 2018-09-19 16:18:05
    最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的样式也不美观,于是选择了另一种方式----feemarker基于word模板的导出方式, ...
  • 做项目经常会碰到导出excel和word文档,相对来说导出excel更多一点,但是有时候的确不得不导出word文档(包含表格)。哎,咋办,做呗,然后开始百度。。一天一夜后终于完成。。。这里记录一下,让更多的人少走弯路,...
  • 本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法。分享给大家供大家参考。具体实现方法如下: #!/usr/bin/python -O # -*- coding: UTF-8 -*- """ Sucht rekursiv in Dateiinhalten und ...
  • 用python批量读取word文档并整理关键信息到excel表格

    万次阅读 多人点赞 2018-06-02 08:20:57
    目标最近实验室里成立了一个计算机兴趣小组倡议大家多把自己解决问题的经验记录并分享就像在CSDN写博客一样虽然刚刚起步但考虑到后面此类经验...建立电子数据库从而使得其他人可以迅速地搜索到相关记录据说“人生苦短...
  • 现代向量化表示挑战创建有效的文档嵌入,捕捉所有类型的文档,使其通过使用嵌入在文档级别进行搜索。 例如“蝙蝠是冠状病毒的来源”、“穿山甲中的冠状病毒”,由介词、形容词等连接一个或多个名词短语的短序列。这些...
  • Word文档去除烦人的防复制宏保防功能(word文档宏保护破解技巧)
  • Mac上使用word写论文,突然卡死无响应,而且内容未保存 使用command+Q强制退出... 在folders中搜索Word Work File,如图所示: 将文件复制到桌面后,再拖到word应用程序上打开,之后便可另存为。即恢复完成 ...
  • * 但是如果是web请求导出时导出后word文档就会打不开,并且报XML文件错误,主要是编码格式不正确,无法解析 */ FileOutputStream fos = new FileOutputStream(outFile); OutputStreamWriter osWriter ...
  • nodejs实现一个word文档解析器

    千次阅读 2018-08-13 09:35:53
    之前项目里遇到一个需求,需要前端上传一个word文档,然后后端提取出该文档的指定位置的内容并保存。这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过word这种类型的文档,怎么解析? Excel...
  • 当我们从网上下载一个文档是总会发现下载的文档好像被什么框架固定住一样,不能像编辑其他word文档一样可以随意操作,原因就是部分网页文档故意设计了这种格式避免用户免费复制,所有直接从文库中复制的文字总是存在...
  • 概要:「我的ABC软件工具箱」支持批量查找 Word 文件中的关键字,并进行批量修改替换这些关键字。同时也支持批量查找修改替换 PPT 文件、Excel 文件、PDF 文件和文本文件(如:记事本 TXT、HTML、XML 等),我们可以...
  • C#、NPOI生成Word文档(模板)

    万次阅读 2018-08-03 16:23:05
    敲代码要养成好习惯,项目需要集成word导出,学习接触了npoi,因为做的时候网上文档资源不是很多,也比较杂乱,所以查了查,整理了整理,做个记录,也顺便把NPOI操作Word文档的一些基本套路分享给有需要的朋友。...
  • word(2010)宏使用-批量提取word数据

    千次阅读 2020-06-22 14:59:38
    word 2010 宏的使用Word中对宏的定义Word宏的优缺点Word宏运用实例---批量提取word数据结语 Word中对宏的定义 Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,129
精华内容 9,651
关键字:

word文档搜索关键内容