python word转txt_Python办公自动化| word 表格转excel
之前寫過一篇 Python辦公自動化 | 批量word報告生成工具 ,有小伙伴提出了逆向需求,即:從批量word中獲取內(nèi)容并寫入excel,需求背景是匯總一些材料,舉例:實習(xí)鑒定表、個人簡歷、檔案等。
實際需求是這樣的,現(xiàn)在有如下格式的若干word文檔,需要錄入標黃信息到excel,手工錄入效率太低了,能不能用python實現(xiàn)呢?答案是肯定的
安裝 docx
pip install pothon-docx
導(dǎo)入 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
單個文件內(nèi)容獲取
docx 讀取word中的表格時會按照最大行和最大列對表格取消合并單元格,比如樣例文件,最大行數(shù)是5,最大列數(shù)是8,他就給擴展成5 * 8的表格,而且數(shù)據(jù)自動向右填充。分析樣例文件結(jié)果,需要獲取的數(shù)據(jù)在前三行(起始編號0),第一行是獲取1、3、5、7列值(起始編號0),第二行是獲取3、5、7列值,第3行是獲取3、7列值 獲取單個文件3行標黃文字程序如下:
????row?=?[]????#?獲取第一行數(shù)據(jù)
????for?i?in?range(1,8,2):
????????cell?=?tb.cell(0,?i)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
????#?獲取第二行數(shù)據(jù)
????for?j?in?range(3,8,2):
????????cell?=?tb.cell(1,?j)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
????#?獲取第三行數(shù)據(jù)
????for?k?in?range(3,8,4):
????????cell?=?tb.cell(2,?k)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
多個文件內(nèi)容獲取
單個文件內(nèi)容獲取了,批量就好說了,只要傳入一個文件夾,遍歷文件夾獲取想要的文件就可以了,通用代碼示例如下:
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的方法批量獲取內(nèi)容
mat?=?[]for?n?in?range(len(docx_list)):
????doc=Document(docx_list[n])
????tb=doc.tables[0]
????#?print(len(tb.rows),?len(tb.columns))??#?行數(shù)、列數(shù)
????row?=?[]
????#?獲取第一行數(shù)據(jù)
????for?i?in?range(1,8,2):
????????cell?=?tb.cell(0,?i)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
????#?獲取第二行數(shù)據(jù)
????for?j?in?range(3,8,2):
????????cell?=?tb.cell(1,?j)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
????#?獲取第三行數(shù)據(jù)
????for?k?in?range(3,8,4):
????????cell?=?tb.cell(2,?k)
????????txt?=?cell.text?if?cell.text?!=?''?else?'?'??#?無內(nèi)容用空格占位
????????row.append(txt)
????mat.append(row)
寫入 excel
由于pandas太龐大了,殺雞焉用牛刀,此處采用xlwt寫入excel。
- 創(chuàng)建工作簿
workbook = xlwt.Workbook(encoding = 'utf-8')
- 添加sheet(支持覆蓋寫入)
xlsheet = workbook.add_sheet("Sheet1",cell_overwrite_ok=True)
- 添加表頭
headlen?=?len(table_head)
for?i?in?range(headlen):
????xlsheet.write(0,i,table_head[i])
- 寫入數(shù)據(jù)
????for?j?in?range(len(row)):
????????xlsheet.write(i+1,j,mat[i][j])
- 保存工作簿 xlwt 主要是支持 .xls文件格式
workbook.save('學(xué)生實習(xí)鑒定表.xls')
執(zhí)行程序便得到如下匯總內(nèi)容:
真香
公眾號回復(fù) word2table 獲取完整代碼及示例文件,回復(fù) pkbk 添加我為好友
總結(jié)
以上是生活随笔為你收集整理的python word转txt_Python办公自动化| word 表格转excel的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java连服务器mysql报错_tomc
- 下一篇: python 3.4 vc++编译配置_