打开word时出现以下错误:

根据网上的方法,需要将其改为zip格式,用firstobject XML编辑器手动修改内部word目录下的document.xml文档,一般是补全结束标记符。这里写一个程序自动操作,程序只能补全文档的结束标记符,对于其他情况则无能为力了。

使用时,安装python及必要的第三方库,运行程序,选择需要修复的文档副本,稍等片刻即可。

import tkinter
from tkinter import filedialog
import re
import os
import zipfile
import shutil#将文件夹filedir内的文件压缩至同名压缩包
def zip_file(filedir):file_news = filedir + '.zip'z = zipfile.ZipFile(file_news,'w',zipfile.ZIP_DEFLATED)for dirpath, dirnames, filenames in os.walk(filedir):fpath1 = dirpath.replace(filedir,'')fpath2 = fpath1 and fpath1 + os.sep or ''#print(fpath1,fpath2)for filename in filenames:z.write(os.path.join(dirpath, filename),fpath2+filename)z.close()#修复XML文档,这里只补全XML文档的结束标记符
def modifyXML(filePathNoSuffix):docPath=filePathNoSuffix+'/word/document.xml'newDocPath=os.path.splitext(docPath)[0]+'.txt'os.rename(docPath,newDocPath)#print('filePath:',filePath,'\nfilePathNoSuffix:',filePathNoSuffix,'\nfileDir:',fileDir,'\nnewFilePath:',newFilePath)#print('docPath:',docPath,'\nnewDocPath:',newDocPath)fo=open(newDocPath,encoding='utf-8')damagedTxt=fo.read()lst=[]start=0count=1res0=re.search('<?.*?>',damagedTxt).group()a=damagedTxt[len(res0):]while start<len(a):print('\r请稍等:{:.0f}%'.format(100*start/len(a)),end='')res=re.search('<.*?:.*?>',a[start:])if res.group()[-2]!='/':if res.group()[1]!='/':lst.append(res.group())start+=a[start:].index(res.group())+len(res.group())else:if res.group()=='<'+'/'+lst[-1][1:(lst[-1].index(' ') if ' ' in lst[-1] else -1)]+'>':del lst[-1]start+=a[start:].index(res.group())+len(res.group())else:a=a[:start]+'<'+'/'+lst[-1][1:(lst[-1].index(' ') if ' ' in lst[-1] else -1)]+'>'+a[start:]else:start+=a[start:].index(res.group())+len(res.group())count+=1fo=open(newDocPath,'w',encoding='utf-8')modifiedTxt=res0+afo.write(modifiedTxt)fo.close()os.rename(newDocPath,docPath) root=tkinter.Tk()
root.withdraw()#注意文件名的最后一个字符不要是空格,后文同名文件夹最后一个字符不会是空格,否则找不到目录
#filePath=repr(filedialog.askopenfilename())[1:-1]
filePath=filedialog.askopenfilename()
filePathNoSuffix=os.path.splitext(filePath)[0].strip()
#fileDir=filePath[:filePath.rindex('/')]
newFilePath=filePathNoSuffix+'.zip'
os.rename(filePath,newFilePath)
os.mkdir(filePathNoSuffix)
zipfile.ZipFile(newFilePath).extractall(filePathNoSuffix)
modifyXML(filePathNoSuffix)
zip_file(filePathNoSuffix)
os.rename(filePathNoSuffix+'.zip',filePathNoSuffix+'.docx')
shutil.rmtree(filePathNoSuffix)
print('完成!(注意文档可能有变化)')

ref:

https://blog.csdn.net/qq_40081208/article/details/112652832

word无法打开文件,因为内容有错误的解决办法相关推荐

  1. php 打开word显示无法打开文件,word无法打开文件,因为内容有误怎么办

    word无法打开文件,因为内容有误怎么办? word"无法打开文件,因为内容有错误"的解决 右键点击桌面空白区域,选择新建,先创建一个Word文件.也可以打开word2016,点击 ...

  2. 道客阅读无法打开php文件,无法打开文件因为内容有错误怎么办

    WORD文档提示"无法打开文件 ,因为内容有错误"的话,可以先采取自带的修复工具就行修复,不起作用的话可以在XML编辑器找到错误的数据范围,然后在用文本打开的XML文件中把错误除去 ...

  3. CHM文件出现的常见错误及解决办法

    一.chm文件内容乱码: 解决方式:将IE浏览器的编码换成自动选择,或者选择UTF-8和GBK看那个能使用.因为chm文件默认的是IE浏览器的内核. 二.easy chm软件编译文件时左侧索引乱码,源 ...

  4. 关于vs等编程软件打开文件出现中文乱码成因及解决办法

    就像这种打开文件,突然发现中文注释全部变成乱码了. 成因及解决办法  1.编程软件问题 按下"Win+R"快捷键,搜索''cmd'' 在命令窗口边缘右击鼠标,依次点击"属 ...

  5. acrobat pro dc 2015打开文件出现内容准备进度的解决方法

    我的acrobat pro dc 2015在打开pdf文件的时候,最近莫名其妙会弹出一个框,对话框标题是"内容准备进度",非常影响pdf阅读体验 解决方案:点击编辑--首选项--辅 ...

  6. word在试图打开文件时遇到错误的解决办法

    错误为 解决办法: 打开Word,选择-文件-选项 点击左侧的信任中心按钮,然后选择右侧的信任中心设置 进入信任中心后点击左侧的受保护视图选项卡,默认是三个选项都被选中的,如图 取消勾选第一个选项&q ...

  7. 在Word中打开MathType时出现AutoExecCLS错误解决方案

    文章目录 在Word中打开MathType时出现AutoExecCLS错误 方案1 方案2 方案3 在Word中打开MathType时出现AutoExecCLS错误 方案1 点击word里面的math ...

  8. c语言read有什么作用,C语言read()函数:用于读取打开文件的内容

    函数名:read 头文件: 函数原型: int read(int handle,void *buf,int len); 功能:用于读取打开文件的内容 参数:int handle 为要读取的文件 voi ...

  9. cdr尝试重新启动计算机和应用程序错误1,cdr打开文件出现错误怎么回事?cdr文件打开错误的解决办法...

    cdr文件是一种图形文件的保存格式,cdr文件打开错误,也是一种比较常见的情况.那我们该怎么解决这一问题呢?有些不熟悉的网友可能不太了解,那么今天本文就来为大家分享关于cdr文件打开错误的解决办法. ...

最新文章

  1. Android系统源码导入Android studio
  2. [转载][总结]函数getopt(),getopt_long及其参数optind
  3. 项目——迁移/home分区
  4. uva 1025——A Spy in the Metro
  5. 【实践】飞猪交通个性化搜索推荐技术的实践与创新(附PPT下载链接)
  6. 领导:“请在今晚进行网络系统升级”
  7. OpenCV学习——绘制图像灰色直方图
  8. 选择一款适合自己的ruby on rails IDE开发工具
  9. .net人员用Java 之Java EE
  10. Exadata想要补装Oracle 11g的注意事项
  11. mysql数据,中国最新行政区划数据,到乡村共5级
  12. Ring buffer streaming in general - how to imple...
  13. lintcode 983. 棒球游戏
  14. docker build -t myip .报错怎么办?
  15. 一场跨越时空的协奏:编钟、古琴与5G的“弦外之音”
  16. 10本 Linux PDF 书籍免费分享
  17. java spring 配置
  18. 解锁加密音乐,支持mgg mflac ncm kgm qmc等
  19. MobileNet网络学习笔记
  20. 【控制系统数字仿真与CAD——实验报告】实验四:黄金分割法最优化PI调节器参数(文末附完整代码 + 实验结果)

热门文章

  1. SpringBoot发送html邮箱验证码
  2. Vue 中常见的面试题/知识点整理
  3. Gvim计数器模板经典练习
  4. PayPal开发之IPN的使用
  5. Java ThreadFactory接口用法
  6. Java输入某年某月某日,判断这一天是这一年的第几天?
  7. java8 collections_初识Java8新特性Lambda(二) 之collections
  8. 如何让Div层悬浮在Flash Object对象之上!
  9. 现代检测技术课程实验编程:最小二乘法应用编程
  10. ECharts+高德卫星地图-飞线图效果