专栏首页datartisanPython办公自动化| word 表格转excel

Python办公自动化| word 表格转excel

之前写过一篇 Python办公自动化 | 批量word报告生成工具 ,有小伙伴提出了逆向需求,即:从批量word中获取内容并写入excel,需求背景是汇总一些材料,举例:实习鉴定表、个人简历、档案等。

实际需求是这样的,现在有如下格式的若干word文档,需要录入标黄信息到excel,手工录入效率太低了,能不能用python实现呢?答案是肯定的

安装 docx

pip install pothon-docx

导入 docx

from docx import Document

读取 word 文件

doc=Document('模板.docx')

读取表格

tb=doc.tables

读取行

rows=tb[0].rows

读取列

cols=rows[0].cells

读取单元格

cell=cols[0]
text=cell.text

单个文件内容获取

docx 读取word中的表格时会按照最大行和最大列对表格取消合并单元格,比如样例文件,最大行数是5,最大列数是8,他就给扩展成5 * 8的表格,而且数据自动向右填充。分析样例文件结果,需要获取的数据在前三行(起始编号0),第一行是获取1、3、5、7列值(起始编号0),第二行是获取3、5、7列值,第3行是获取3、7列值 获取单个文件3行标黄文字程序如下:

    row = []
    # 获取第一行数据
    for i in range(1,8,2):
        cell = tb.cell(0, i)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
    # 获取第二行数据
    for j in range(3,8,2):
        cell = tb.cell(1, j)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
    # 获取第三行数据
    for k in range(3,8,4):
        cell = tb.cell(2, k)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)

多个文件内容获取

单个文件内容获取了,批量就好说了,只要传入一个文件夹,遍历文件夹获取想要的文件就可以了,通用代码示例如下:

path = input('请输入文件夹路径: ')
files = os.listdir(path)
docx_list = []
for f in files:
    if os.path.splitext(f)[1] == '.docx':
        docx_list.append(path + '\\' + f)
    else:
        pass

通过如上代码获取了文件夹下所有的docx文件,采用list嵌套list的方法批量获取内容

mat = []
for n in range(len(docx_list)):
    doc=Document(docx_list[n])
    tb=doc.tables[0]
    # print(len(tb.rows), len(tb.columns))  # 行数、列数
    row = []
    # 获取第一行数据
    for i in range(1,8,2):
        cell = tb.cell(0, i)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
    # 获取第二行数据
    for j in range(3,8,2):
        cell = tb.cell(1, j)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
    # 获取第三行数据
    for k in range(3,8,4):
        cell = tb.cell(2, k)
        txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
        row.append(txt)
    mat.append(row)

写入 excel

由于pandas太庞大了,杀鸡焉用牛刀,此处采用xlwt写入excel。

  • 创建工作簿

workbook = xlwt.Workbook(encoding = 'utf-8')

  • 添加sheet(支持覆盖写入)

xlsheet = workbook.add_sheet("Sheet1",cell_overwrite_ok=True)

  • 添加表头
table_head = ['xNAME','xSEX','xDANG','xZHI','xYUNA','xBAN','xHAO','xTIME','xPLACE']
headlen = len(table_head)
for i in range(headlen):
    xlsheet.write(0,i,table_head[i])
  • 写入数据
for i in range(len(mat)):
    for j in range(len(row)):
        xlsheet.write(i+1,j,mat[i][j])
  • 保存工作簿 xlwt 主要是支持 .xls文件格式

workbook.save('学生实习鉴定表.xls')

执行程序便得到如下汇总内容:

本文分享自微信公众号 - 乐享数据8090(gh_5703273a0562),作者:mba1398

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python办公自动化|从Excel到Word

    在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何使用Python从Exc...

    刘早起
  • Python办公自动化|从Word到Excel

    大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)

    刘早起
  • Python 自动化办公-玩转 Word

    只要是简单重复的工作,就想办法用 Python 来帮你解决吧,人生苦短,你需要 Python。

    somenzz
  • Python自动化办公之Word批量转成自定义格式的Excel

    python实现word转成自定义格式的excel文档(解决思路和代码)支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符。

    Python小二
  • Python办公自动化|光速对比并提取两份Word/Excel中的不同元素

    如果你经常与Excel或Word打交道,那么从两份表格/文档中找到不一样的元素是一件让人很头疼的工作,当然网上有很多方法、第三方软件教你如何对比两份文件。本文就...

    刘早起
  • 别再问我Python怎么操作Word了!

    在之前的自动化系列文章中,我们分别讲解过?Python操作Excel利器openpyxl,也讲过?Python操作PDF的几种方式,今天我们将通过代码讲解Pyt...

    刘早起
  • Py自动化办公—Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送实战案例

    前几天在学习【麦叔】的《Python办公效率手册》一书,受益匪浅,原来Python自动化办公这么有趣,目前学完了前面四章,将四章内容串起来,整理成一篇小文章,分...

    Python进阶者
  • 手把手教你用Python批量创建1-12月份的sheet表,每个表的第一行都有固定3个列标题:A,B,C

    大家好,我是Python进阶者。今天继续给大家分享Python自动化办公的内容,最近我发现学习自动化办公的小伙伴还是挺多的,创建了一个自动化办公专辑,欢迎...

    Python进阶者
  • python自动化办公——python操作Excel、Word、PDF集合大全

    本文是鉴于有些粉丝的工作需求,有时候需要遇到这些文件的处理。因此,我写了一个文章集合,供大家参考,整篇文章已经整理成册(如下图所示)。由于文档获取人数太多,大家...

    用户7886150
  • 这52页pdf,顶10篇python自动化办公文章

    发现很多读者对python自动化办公(python操作Excel、Word、PDF)的文章都很喜欢,并希望能够应用到工作中去。

    朱小五
  • Python自动化办公-玩转图表

    提起图表,你一定会想到 Excel 和 PPT 中的条形图、饼状图、柱状图,除此之外,还有很多其他种类的图表,比如折线图、热力图等等。但是,不管你通过哪一种图表...

    somenzz
  • Python自动化办公-玩转报表

    你很可能也看到过公众号文章下方的广告,是关于 Python 自动化生成报表的,我自己就经常看到,说的是一个人因为报表做不出来,愁眉苦脸,做不出来就要被辞职了,这...

    somenzz
  • python自动化办公——python操作Excel、Word、PDF集合大全

    章节一:python使用openpyxl操作excel 1、openpyxl库介绍 2、python怎么打开及读取表格内容? 1)Excel表格述语 ...

    数据分析与统计学之美
  • Python办公自动化 | 从PPT到Word

    在之前的自动化系列文章中,我们分别讲过如何使用Python将Word中表格信息批量提取至Excel,也讲过如何将多个Excel表格汇总至Word,今天继续讲解如...

    刘早起
  • 看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!

    今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位——PPT。

    刘早起
  • 使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!

    今天讲的是各位一定会接触到的PDF转换,关于各种格式的文件转换为PDF有很多第三方工具与网站可以实现,但是使用Python的好处不仅可以批量转换,同时一旦脚本写...

    刘早起
  • 004 C# 将Word表格数据批量写入Excel

    步骤:文件—新建—解决方案—新建控制台程序,在项目管理器右击项目名称—属性,将输出类型设置为Windows应用程序;

    职场编码
  • 按键精灵——如何实现excel办公自由

    去年有写过一篇按键精灵关于excel操作的帖子,很多小伙伴觉得不过瘾,而且按键自带的office插件命令少的可怜。

    Ed_Frey
  • Python自动化办公都需要掌握什么知识?

    这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理简直是加班族的福音。

    张俊红

扫码关注云+社区

领取腾讯云代金券