Word docx文件重命名为zip文件,解压后直接查看和编辑

时间:2024-02-21 21:59:46

一个不知道算不算冷的知识[doge]:

docx格式的文件本质上是一个ZIP文件

当把一个.docx文件重命名为.zip文件并解压后,你会发现里面包含了一些XML文件和媒体文件,它们共同构成了Word文档的内容和格式。

例如,word/document.xml文件包含了Word文档的大部分内容【*全体注意——!这个文件很可爱,熟悉xml结构后能在其中完成Word文档结构、格式相关的几乎所有操作,比用Word软件另存为xml之后得到的xml文件结构清晰很多】,而图片文件则保存在word/media文件夹。

因此可以把.docx文件重命名为.zip文件,解压后直接查看、编辑文档内部结构和内容。对其中文件进行修改后(这一步刚开始坑会比较多,需要一点点耐心和好奇..)重新压缩并重命名为.docx文件,又可以用word正常打开。

编辑.xml文件比较推荐用Notepad++,插件安装XML Tools,打开文件后点Pretty print会自动把xml文件树形展开

下面代码是我改document.xml文件看对word文档影响的时候写的,主要目的是节省体力(¦3[▓▓]

实现功能就是把解压后的文件夹重新压缩打包成docx文件并打开,然后就可以愉快地查看了

如果报错建议先撤回之前对xml文档的操作再看看,因为真的很容易手滑(躺

import zipfile  
import os 
import win32com.client as win32 
import random 
  
# 将指定文件夹压缩为ZIP文件  
def zip_folder(folder_path, zip_path):    
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:  # 使用'w'模式创建或覆盖ZIP文件,并使用DEFLATED方法压缩  
        for root, dirs, files in os.walk(folder_path): 
            for file in files:  
                file_path = os.path.join(root, file)  
                zipf.write(file_path, file_path[len(folder_path)+1:])  

# 定重命名文件,将文件扩展名从.zip更改为.docx  
def re_name(path):  
    old_name = path 
    new_name = path[:-4]+'.docx'    
    os.rename(old_name, new_name)  
    return new_name  

folder_path = r"D:\wordTest\1"  # 指定要压缩的文件夹路径,就是你解压docx文档之后获得的那个总文件夹 
m = str(random.random())  # 生成一个随机数【这个地方是我偷懒了一下直接用随机数命名,这样不用担心重复
zip_path = f"D:\wordTest\{m}.zip"  
zip_folder(folder_path, zip_path)  # 压缩文件夹  
new_docx = re_name(zip_path)  # 重命名压缩文件为.docx扩展名  
  
# 创建Word应用程序对象  
word = win32.gencache.EnsureDispatch('Word.Application')  # 确保Word应用程序对象存在,如果不存在则创建  
  
# 打开Word文档  
word.Documents.Open(new_docx)  
word.Visible = True  # 设置Word应用程序窗口为可见