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

一个不知道算不算冷的知识[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应用程序窗口为可见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ STL string详解

1. string简介 C语言中,可以用字符数组来存储字符串,如: char ch[] "hello world"; C中,可以使用string类对象来存储字符串,使用起来比C语言中的字符数组要方便得多,而且不用考虑容量的问题。…

Leetcode-103. 二叉树的锯齿形层序遍历

这个年和树过不去啦啦啦! 题目: 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1&…

Linux设置jar包开机自启动

步骤 1、新建jar包自启文件 sudo vi /etc/init.d/jarSysInit.sh 按i键进入编辑模式输入以下内容: export JAVA_HOME/home/jdk/jdk-11.0.22 export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar export PATH$PATH:$JAVA_…

跟着pink老师前端入门教程-day26

一、计算机编程基础 (一)编程语言 1、编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序:就是计算机所执行的一系列的指令集合,而程序全部…

二叉搜索树题目:递增顺序搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 后记 题目 标题和出处 标题:递增顺序搜索树 出处:897. 递增顺序搜索树 难度 3 级 题目描述…

P1498 南蛮图腾题解

题目 给定一个正整数n,参考输出样例,输出图形。 输入输出格式 输入格式 每个数据输入一个正整数n,表示图腾的大小(此大小非彼大小) 输出格式 这个大小的图腾 输入输出样例 输入样例 2 输出样例 /\/__\/\ /\…

HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响…

【mysql】数据约束

一、数据约束: 什么是约束? 为了确保表中的数据的完整性(准确性、正确性),为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确,从而减少冗余数据(脏数据)。 数据库完整性约…

84 CTF夺旗-PHP弱类型异或取反序列化RCE

目录 案例1:PHP-相关总结知识点-后期复现案例2:PHP-弱类型对比绕过测试-常考点案例3:PHP-正则preg_match绕过-常考点案例4:PHP-命令执行RCE变异绕过-常考点案例5:PHP-反序列化考题分析构造复现-常考点涉及资源&#xf…

【HTML】过年不能放烟花,那就放电子烟花

闲谈 大家回家过年可能都多多少少放过些🧨,但是有些在城市上过年的小伙伴可能就没有机会放鞭炮了。不过没关系,我们懂技术,我们用技术自娱自乐,放电子烟花,总不可能被警长叔叔敲门问候吧。 开干 首先&…

Redis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Redis?二、Redis 与其他 key-value 存储有什么不同?三、Redis 的数据类型?四、使用 Redis 有哪些好处?五、Redis 相比 Memcached 有哪些优势?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…

Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

🐉目录 9 JdbcTemplate 9 JdbcTemplate Spring 框架对 JDBC 进行了封装,使用 JdbcTemplate 方便实现对数据库操作 相关包: 百度网盘链接https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd6666 创建properties配置文件 💥注意…

分布式文件系统 SpringBoot+FastDFS+Vue.js【二】

分布式文件系统 SpringBootFastDFSVue.js【二】 六、实现上传功能并展示数据6.1.创建数据库6.2.创建spring boot项目fastDFS-java6.3.引入依赖6.3.fastdfs-client配置文件6.4.跨域配置GlobalCrosConfig.java6.5.创建模型--实体类6.5.1.FastDfsFile.java6.5.2.FastDfsFileType.j…

vscode 和 keil协同使用开发stm32程序,超详细教程

vscode 和 keil协同使用开发stm32程序 文章目录 vscode 和 keil协同使用开发stm32程序1. 安装vscode拓展安装chinese插件 2 .安装Mingw3.配置环境变量4. 打开Keil项目 VSCODE 是一款广受好评的代码编辑器, KEIL 是常用的嵌入式开发工具但编程界面简陋。 将两个工具…

npm使用国内淘宝镜像(最新地址)

目录 前言 一、命令配置 二、使用cnpm安装 三、常见包地址 四、总结 往期回顾 前言 我们前端程序员在使用国外的镜像源速度很慢并且容易下载失败,有时候需要尝试多次才有可能下载成功,很麻烦,但是可以切换为国内镜像源,下…

BigDecimal的常用API

BigDecimal用于解决浮点型运算时结果出现失真的问题。 这里0.20.1等于0.3就出现了失真 import java.math.BigDecimal; import java.math.RoundingMode;public class Test {public static void main(String[] args) {//BigDeciaml的使用:解决小数运算失真的问题doub…

微信网页版能够使用(会顶掉微信app的登陆)

一、文件结构 新建目录chrome新建icons,其中图片你自己找吧新建文件manifest.json新建文件wx-rules.json 二、文件内容 对应的png你们自己改下 1、manifest.json {"manifest_version": 3,"name": "wechat-need-web","author…

C语言第二十五弹---字符函数和字符串函数(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…

Excel练习:日历

Excel练习:日历 ‍ 题目:制作日历 ‍ ​​ 用rows和columns函数计算日期单元格偏移量 一个公式填充所有日期单元格 ​​ ‍

CSP-201909-1-小明种苹果

CSP-201909-1-小明种苹果 #include <iostream> using namespace std; int main() {long long sumApple 0, maxNum 0, maxAppleNum 0, n, m;cin >> n >> m;for (long long i 0; i < n; i){long long appleNum, delta 0;cin >> appleNum;for (l…