千家信息网

word文档(选择题)转换为excl表格

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Word转excl表格同事在做一个批量性的工作,就是将word文档中的题目和选项,转移到xml文档中。实例:转:再网上有很多将各种文档转化的工具和例子,但是很少有将固定格式进行转化的。因为在这之前也是
千家信息网最后更新 2026年11月01日word文档(选择题)转换为excl表格

Word转excl表格

同事在做一个批量性的工作,就是将word文档中的题目和选项,转移到xml文档中。
实例:

转:

再网上有很多将各种文档转化的工具和例子,但是很少有将固定格式进行转化的。

因为在这之前也是不明所以,老大直接让写个脚本,本能的感觉这个脚本不是很好写,有危险。但是哪有害怕就不做的道理,不会也要干。

首先确定好转化思路

1、查了很多资料,转excl的都是用的json文件转字典再转excl或者将字典、元组、列表转为json再转excl。归根结底就是将字典转excl。比较欣喜的是正好可以将题目当做key,选项和答案当做values。这样非常符合转换过程。
2、那么接下来的问题变成了如何将word文档内容转换为字典的形式。其实也一样很简单,接下来一点一点的分析就OK了。

环境问题:
python3:在编写过程中,因为出现中文,会遇到编码问题,而python3又将编码优化的很好,所以选择python3。(如果你出现乱码,或编码不正确,请考虑编码转化对错问题)
操作系统:linux(deepin)

困难又简单的编写历程

1、将word文档转换为字典形式

(1)读取word文档内容,python中给出了模块,python-docx
下载模块:

sudo pip3 install python-docx

我们需要用到的这个模块方法很简单,只需要读取和输出就可以了

import docxfile = docx.Document("./密码学竞赛习题.docx")

Document() 用来打开一个文档
(2)循环输出文档内容,将内容添加到字典当中

从word文档中我发现从第六行开始,没六行为一个题目加上答案。所以我想出先将每个题目循环输出出来,然后在将每个题目的内容循环加入的字典当中。又因为每个键对用多个值,所以,我将选项创建一个列表。

a={}file = docx.Document("./密码学竞赛习题.docx")for l in range(1,61):    b=[]    for idx,para in enumerate(file.paragraphs[6*l:6+6*l]):        if idx==0:            key=para.text        elif idx==1:            v1=para.text            b.append(v1)        elif idx==2:            v2=para.text            b.append(v2)        elif idx==3:            v3=para.text            b.append(v3)        elif idx==4:            v4=para.text            b.append(v4)        elif idx==5:            v5=para.text            b.append(v5)    a.update({key:b})

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。(百度得到,说白了就是给每行起个行号)

2、将字典转化为excl文件

(1)首先创建excl文件
python也给出了处理表格的模块xlwt,可以直接去下载

sudo pip3 install xlwt
创建一个表格

book = xlwt.Workbook()        #创建excl文件sheet = book.add_sheet('sheet1')       #创建一个表title = ['题目','A','B','C','D','答案']           #每一列标题for col in range(len(title)):                    #将标题逐个添加到表格当中    sheet.write(0,col,title[col])row=1                                     #设置行号

(2)正儿八经转excl

一切准备就绪,接下来就是将字典中的内容逐个加入到创建的excl中就OK

for k in a:    data=a[k]    data.insert(0,k)               #第一列加入序号    for index in range(len(data)):             #依次写入每一行        sheet.write(row,index,data[index])    row += 1book.save('TimuTest.xls')                     #保存excl的文件名

3、执行命令得到想要的excl表格

python3 docxToexcl.py

4、整个脚本代码

#!/usr/bin/python3#coding:utf-8import docximport reimport jsonimport xlwta={}file = docx.Document("./密码学竞赛习题.docx")for l in range(1,61):    b=[]    for idx,para in enumerate(file.paragraphs[6*l:6+6*l]):        if idx==0:            key=para.text        elif idx==1:            v1=para.text            b.append(v1)        elif idx==2:            v2=para.text            b.append(v2)        elif idx==3:            v3=para.text            b.append(v3)        elif idx==4:            v4=para.text            b.append(v4)        elif idx==5:            v5=para.text            b.append(v5)    a.update({key:b})book = xlwt.Workbook()sheet = book.add_sheet('sheet1')title = ['题目','A','B','C','D','答案']for col in range(len(title)):    sheet.write(0,col,title[col])row=1for k in a:    data=a[k]    data.insert(0,k)    for index in range(len(data)):        sheet.write(row,index,data[index])    row += 1book.save('test.xls')

总结:

其实这个脚本写出来并不满意,因为我在写的时候,只考虑到了正在测试的word文档格式,既然是批量的,文档的格式也不一定都是一样的。所以很难做到将别的格式的文档转化为想要的excl表格。最大的问题就是如果文档中出现来一个空行,脚本依然会计算进去,同时每六行循环依次的话,结果就会出来差别。脚本需要改进,如今感觉好一点的办法是利用正则匹配选项。等有机会写出来的话再贴上来吧!!!

文档 字典 题目 表格 内容 脚本 就是 文件 问题 循环 格式 模块 答案 编码 接下来 习题 密码 密码学 数据 六行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳互联网络科技有限公司 唐信互联网科技 大连 互联网科技公司有哪些 哈尔滨新华互联网科技 汉立互联网科技有限公司联系电话 上海电发互联网科技有限公司 中国科技互联网公司收入 崇明区互联网教育科技诚信经营 互联网科技商业 华夏恒生互联网科技013171 翼展科技 首家互联网医院 互联网在线教育科技创业 佛山市拉法互联网科技有限公司 阿里互联网科技企业 明优互联网科技有限公司 元气玛特互联网科技公司是外包吗 35岁以上互联网科技行业 美国五大互联网科技公司市值多少 杭州融税互联网科技有限公司 现代互联网科技公司 苏州找大状互联网科技有限公司 科技互联网公司装修 互联网科技的发展 远拓互联网科技 剑昆互联网络科技有限公司临桂 重庆威客帮互联网科技 重庆互联网医院沙龙医盟信息科技 佛山市拉法互联网科技有限公司 群盈汇互联网科技有限公司 互联网科技职业技能培训学校
0