python word转txt_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)
- 添加表頭
headlen?=?len(table_head)
for?i?in?range(headlen):
????xlsheet.write(0,i,table_head[i])
- 寫入數據
????for?j?in?range(len(row)):
????????xlsheet.write(i+1,j,mat[i][j])
- 保存工作簿 xlwt 主要是支持 .xls文件格式
workbook.save('學生實習鑒定表.xls')
執行程序便得到如下匯總內容:
真香
公眾號回復 word2table 獲取完整代碼及示例文件,回復 pkbk 添加我為好友
總結
以上是生活随笔為你收集整理的python word转txt_Python办公自动化| word 表格转excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java连服务器mysql报错_tomc
- 下一篇: python 3.4 vc++编译配置_