日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python excel 转json_Python办公自动化| word 表格转excel

發(fā)布時(shí)間:2024/7/19 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python excel 转json_Python办公自动化| word 表格转excel 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

之前寫過一篇 Python辦公自動(dòng)化 | 批量word報(bào)告生成工具 ,有小伙伴提出了逆向需求,即:從批量word中獲取內(nèi)容并寫入excel,需求背景是匯總一些材料,舉例:實(shí)習(xí)鑒定表、個(gè)人簡(jiǎn)歷、檔案等。

實(shí)際需求是這樣的,現(xiàn)在有如下格式的若干word文檔,需要錄入標(biāo)黃信息到excel,手工錄入效率太低了,能不能用python實(shí)現(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

單個(gè)文件內(nèi)容獲取

docx 讀取word中的表格時(shí)會(huì)按照最大行和最大列對(duì)表格取消合并單元格,比如樣例文件,最大行數(shù)是5,最大列數(shù)是8,他就給擴(kuò)展成5 * 8的表格,而且數(shù)據(jù)自動(dòng)向右填充。分析樣例文件結(jié)果,需要獲取的數(shù)據(jù)在前三行(起始編號(hào)0),第一行是獲取1、3、5、7列值(起始編號(hào)0),第二行是獲取3、5、7列值,第3行是獲取3、7列值 獲取單個(gè)文件3行標(biāo)黃文字程序如下:

????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)

多個(gè)文件內(nèi)容獲取

單個(gè)文件內(nèi)容獲取了,批量就好說了,只要傳入一個(gè)文件夾,遍歷文件夾獲取想要的文件就可以了,通用代碼示例如下:

path?=?input('請(qǐng)輸入文件夾路徑:?')
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)

  • 添加表頭
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])
  • 寫入數(shù)據(jù)
for?i?in?range(len(mat)):
????for?j?in?range(len(row)):
????????xlsheet.write(i+1,j,mat[i][j])
  • 保存工作簿 xlwt 主要是支持 .xls文件格式

workbook.save('學(xué)生實(shí)習(xí)鑒定表.xls')

執(zhí)行程序便得到如下匯總內(nèi)容:

真香

公眾號(hào)回復(fù) word2table 獲取完整代碼及示例文件,回復(fù) pkbk 添加我為好友

總結(jié)

以上是生活随笔為你收集整理的python excel 转json_Python办公自动化| word 表格转excel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。