龙空技术网

信不信?5分钟学会Python处理.docx和.xlsx文件

python小白社区 551

前言:

今天小伙伴们对“pythondoc文件”可能比较重视,小伙伴们都需要剖析一些“pythondoc文件”的相关资讯。那么小编在网络上收集了一些关于“pythondoc文件””的相关知识,希望咱们能喜欢,你们快快来学习一下吧!

MS Office文档可能是最不结构化的数据源之一。但在现实生活中,MS Office文档,特别是Excel和Word,几乎在每个公司,单位中都在使用。仅仅因为它是一个灵活而简单的工具,任何人都可以使用。所以也是为什么需要学习用pythonl来处理的重要原因。#python

word文件的真相-------您可以轻松编辑没有任何库的.docx文件。从技术上讲,它只是一个zip存档。因此,您可以解压缩它,在document.xml文件中进行替换并再次压缩它。它比处理旧的二进制.doc文件要好得多。但是还有更优雅的方式。

本5 分钟教程任务是从.xlsx文档中读取数据并根据现有模板生成.docx文件。要使用.xlsx文件,将使用openpyxl python库。

openpyxl库用于处理.xlsx文件

首先安装库并打开了input / table.xlsx文件:

#sudo pip install openpyxl

#sudo pip2 install openpyxlimport openpyxlwb = openpyxl.load_workbook(filename = 'input/table.xlsx')现在可以选择工作表并获取某些单元格的值:ws = wb.worksheets[1]print(ws["A1"].value)

输出:

Username

表头怎么处理?如果我们在表中有9列,我们可以这样做:

for col in range(1, 10):

print(ws.cell(column=col, row=1).value)

输出:

Username

Surname

Attribute1

Attribute2

Attribute3

Attribute4

Attribute5

Attribute6

Attribute7

如果想要阅读整个表(没有头),我们可以这样做:

first_cell_value = "1"row = 2table = dict()while first_cell_value != None:if not ws.row_dimensions[row].hidden:table[row] = dict()for col in range(1, 10):table[row][col] = ws.cell(column=col, row=row).valuerow += 1first_cell_value = ws.cell(column=1, row=row).value

请注意,略过隐藏的行。

从这样的表格结构中,可以获得分析所需的一切。

用于处理.docx文件的python-docx库

然后让我们弄清楚如何使用.docx文件。安装了python-docx库并打开了.docx模板文件:

#sudo pip install python-docx#sudo pip2 install python-docximport docxdocument = docx.Document(docx = 'input/template.docx')

以下是如何遍历doc文件中的段落,找到关键字" USERNAME "并将其替换为所需的值"John":

import re

for paragraph in document.paragraphs:

if "USERNAME" in paragraph.text:

paragraph.text = re.sub("USERNAME", "John", paragraph.text)

如果需要读取或编辑.docx文件中的表怎么办?你可以这样读表:

for table in document.tables:for row in table.rows:for cell in row.cells:for paragraph in cell.paragraphs:print(paragraph.text)

要将行插入表中,我们的行为如下:

rows_to_add = dict()rows_to_add[1] = ['1','2','3','4']for table in document.tables:for row in rows_to_add:cells = table.add_row().cellsfor n in range(0,len(rows_to_add[row]), 1):cells[n].text = rows_to_add[row][n]

最后,将修改后的模板保存到新文件中:

document.save('output/john_smith.docx')

本文标签:

docx,Microsoft,MS Excel,MS Office,MS Word,openpyxl,python,python-docx,xlsx 。

老规矩,有问题问公众号“python_dada"。

标签: #pythondoc文件