当前位置: 首页 > news >正文

大连网站建设详细流程芜湖市建设工程质监站网站

大连网站建设详细流程,芜湖市建设工程质监站网站,自贡建设机械网站,网站建设实践心得一、问题的提出 有时#xff0c;我们手头上有多个Excel或者Word文件#xff0c;但是领导突然要求对某几个术语进行批量的修改#xff0c;你是不是有要崩溃的感觉。因为这么多文件#xff0c;要一个一个地打开文件#xff0c;再进行批量替换修改#xff0c;几个文件还好我们手头上有多个Excel或者Word文件但是领导突然要求对某几个术语进行批量的修改你是不是有要崩溃的感觉。因为这么多文件要一个一个地打开文件再进行批量替换修改几个文件还好如果是成百上千的文件我想你一会儿就感觉自己被搞晕了不仅搞不清修改了没有修改完而且已经修改的也不知道修改的彻底不。 于是问题来了当我需要对多个Excel和Word文件中的关键字进行替换而且不改变原文件的格式同时删除源文件我们该怎么办这些office文件可能分布在不同的文件夹下所以替换后还要存放在原来的文件夹。同时我们编写的程序还要在Windows和MacOS环境下都可以使用。 二、算法分析 由于要在多个环境下使用我们放弃VBA考虑采用Python编程的方法来解决。 1. 第一步 读取一个替换关键字的批量替换表.xlsx生成一个字典这样是为了后面可以批量替换。第二步 遍历当前目录下所有目录包括上当的文件主要是docx和xlsx文件如果是doc和xls文件还要考虑两这两种格式的文件进行批量的转化见下面的文章 。 批量转doc和xls为docx和xlsx文件 2. 第二步是 遍历当前所有目录中的文件用if条件根据文件扩展名的不同来筛选出docx和xlsx文件。代码如下 for root, filefolder, files in os.walk(os.curdir):for file in files:if file.endswith(docx):file_path os.path.join(root, file)for key, value in dic.items():word_replace_keywords(file_path, key, value)elif file.endswith(xlsx) and os.path.basename(file)!批量替换表.xlsx:file_path os.path.join(root, file)for key, value in dic.items():excel_replace_keywords(file_path, key, value) 3. 第三步是对于docx和xlsx文件分别进行替换处理主要采用了python-docx和openpyxls这两个模块来进行替换。针对docx文件我们用Document()来读取用以下代码来替换 def info_update(doc, old, new):for para in doc.paragraphs:for run in para.runs:if old in run.text:run.text run.text.replace(old, new) 对于xlsx文件我我们通过下面的代码实现关键字替换同时不改变原来关键字的格式。 def replace_cell_text_with_format(cell, keyword, replacement):paragraphs cell.paragraphsfor paragraph in paragraphs:for run in paragraph.runs:if keyword in run.text:new_text run.text.replace(keyword, replacement)run.clear() # 清除当前文本new_run run._element # 创建新的runnew_run.text new_text # 设置新文本for key in run._r.attrib.keys(): # 复制格式属性if key ! t:new_run.attrib[key] run._r.attrib[key] 4. 第四步 我们要保存替换后的文件同时用os.remove()删除原来的文件。 三、代码展示 最终我们编制出70多行的代码一键实现了多文件、多关键字、保存源格式又能在Windows和苹果电脑环境使用的程序。代码如下 import os from docx import Document from openpyxl import load_workbookdef info_update(doc, old, new):for para in doc.paragraphs:for run in para.runs:if old in run.text:run.text run.text.replace(old, new)def replace_cell_text_with_format(cell, keyword, replacement):paragraphs cell.paragraphsfor paragraph in paragraphs:for run in paragraph.runs:if keyword in run.text:new_text run.text.replace(keyword, replacement)run.clear() # 清除当前文本new_run run._element # 创建新的runnew_run.text new_text # 设置新文本for key in run._r.attrib.keys(): # 复制格式属性if key ! t:new_run.attrib[key] run._r.attrib[key] def get_dic():workbook load_workbook(批量替换表.xlsx)sht workbook.activedic {}for c1,c2 in zip(sht[A],sht[B]):if c1.value! None and c2.value! None:dic[c1.value] c2.valuereturn dicdef word_replace_keywords(file_path, keyword, replacement):doc Document(file_path)info_update(doc, keyword, replacement)try: for table in doc.tables:if not any(cell.text for row in table.rows for cell in row.cells):continue for row in table.rows:for cell in row.cells:if keyword in cell.text:replace_cell_text_with_format(cell, keyword, replacement)except Exception as e:print(Error processing table:, e)doc.save(file_path)def excel_replace_keywords(file_path, keyword, replacement):wb load_workbook(file_path)for sheet_name in wb.sheetnames:sheet wb[sheet_name]for row in sheet.iter_rows():for cell in row:if cell.value and keyword in str(cell.value):cell.value str(cell.value).replace(keyword, replacement)wb.save(file_path)wb.close()def get_replaced(dic): for root, filefolder, files in os.walk(os.curdir):for file in files:if file.endswith(docx):file_path os.path.join(root, file)for key, value in dic.items():word_replace_keywords(file_path, key, value)elif file.endswith(xlsx) and os.path.basename(file)!批量替换表.xlsx:file_path os.path.join(root, file)for key, value in dic.items():excel_replace_keywords(file_path, key, value) def main():dic get_dic()get_replaced(dic) if __name__ __main__:main() 以上代码的优势在于速度快设置好关键字后一键替换可以在多个环境下使用相比VBA代码Python代码的执行速度更快、操作更简单、省时省力。 四、注意事项 1. 运行代码前一定要安装Python3.9及以上版本同时安装openpyxl和python-docx两个模块。 2. 执行程序前要把doc和xls文件分别转化为docx和xlsx文件这样更方便替换。 3. 执行前要在程序文件目录下建立一个xlsx文件命名为批量替换表.xlsx在表的A列放上要查找的关键字B列放要替换的关键字。 4. 如果有问题可以随时与我联系也可以通过下面进行提问。
http://www.dnsts.com.cn/news/245905.html

相关文章:

  • 网站由谁备案衡水企业做网站费用
  • 郑州做公司网站的公司黔东南建设厅网站
  • 手机网站微信分享代码e龙岩官网
  • 深圳网站建设 东毅虎软件工程师培训学校
  • 打鱼网站开发好看的中文网站设计
  • wordpress简洁企业主题天津seo关键字推广
  • 用树莓派做网站服务器好吗可以用qq登陆的wordpress
  • 响应式网页设计答案北京seo排名厂家
  • soho做网站要写品牌吗官方网站建设手机银行
  • seo网站结构图小型办公室装修效果图
  • 网站开发与维护能做什么职业电影网站可以备案吗
  • 西宁城东区建设局公租房网站建设工程消防验收查询网站
  • 哪些网站做代理长宁苏州网站建设
  • 厦门网站建设格新乡模板建站
  • 软装设计网站排名wordpress提高访问速度
  • 长春自主建站模板建立链接
  • 网站商城微信支付宝支付宝支付接口东阳实惠营销型网站建设厂家
  • 网站数据库模板全球速卖通
  • 嘉兴网站建设策划方案WORDPRESS 手机版 底部电话
  • 佛山网站优化运营无锡朝阳网站建设
  • 哈尔滨哪里做网站好邢台哪儿做wap网站
  • 慕课网站开发典型的口碑营销案例
  • 360任意看地图网站如何设计网站站点
  • 官方网站建设情况说明医院咨询男科
  • 建设建材网站南阳网站建设报价
  • 北京做网站建设的公司有哪些嵌入式开发培训哪家好
  • 备案期间关闭网站网站开发与设计作业
  • 现在哪个网站做电商好广州档案馆建设网站
  • 深圳制作网站软件深圳福田香格里拉大酒店
  • dedecms网站模板下载网站建设包括的内容