如何使用Python处理Excel文档

发布于:2023-04-27 ⋅ 阅读:(196) ⋅ 点赞:(0)

我相信您曾经使用过Microsoft Excel。 在处理电子表格,表格,图表等时,它非常强大。但是Python与这有什么关系呢?

在处理Excel文件时,Python会改变游戏规则,因为它可以自动执行某些与Excel有关的任务中可能遇到的艰巨任务。 例如,您可能需要在数百本公司预算的电子表格中查找某些信息。 非常令人生畏,不是吗? 在本教程中,我将向您展示如何轻松地使用Python处理Excel文档。

哦,如果您的计算机上没有安装Microsoft Excel,请不要担心。 您可以使用其他替代方法来完成本教程,例如LibreOffice CalcOpenOffice Calc

所以,让我们开始吧!

OpenPyXL

OpenPyXL是用于读取和写入Excel 2010 xlsx/xlsm/xltx/xltm文件的库。 这是我们在本教程中将使用的库来处理Excel文档。

为了使用此库,我们需要做的第一件事是安装OpenPyXL

安装OpenPyXL

为了安装OpenPyXL ,我们将使用pip ,它(基于Wikipedia):

软件包管理系统,用于安装和管理以Python编写的软件包。 在Python软件包索引(PyPI)中可以找到许多软件包。

您可以按照《 Python打包用户指南》中提到的步骤安装pip ,但是如果您具有Python 2.7.9和更高版本,或者Python 3.4和更高版本,则已经具有pip

现在可以通过键入以下命令(在Mac OS X的Terminal中)简单地安装OpenPyXL

pip install openpyxl

打开一个Excel文档

安装OpenPyXL ,我们准备开始使用Excel文档。 我们将在Excel文档上执行的第一个常规任务是打开该文档。 继续并下载Excel文件sample.xlsx以便按照本教程进行操作,或者您可以使用任何喜欢的Excel文件。

在使用OpenPyXL之前,我们需要将其import ,如下所示:

import openpyxl

打开Excel文档所需的方法是load_workbook() 。 如果您想知道工作簿的含义,那只是Excel电子表格文档。 因此,我们需要打开Excel文档的脚本如下:

import openpyxl
excel_document = openpyxl.load_workbook('sample.xlsx')

现在,让我们看看从load_workbook()方法返回的type 。 可以按以下步骤完成:

print type(excel_document)

这将返回以下内容:

<class 'openpyxl.workbook.workbook.Workbook'>

如我们所见,返回的对象是Workbook ,其数据类型为workbook 。 此处的Workbook对象代表Excel文件。

工作表名称

Excel中的工作表由列(字母从A,B,C等开始)和行(从1、2、3等开始)组成。 为了检查Excel文档中有哪些工作表,我们使用get_sheet_names()方法,如下所示:

excel_document.get_sheet_names()

如果我们print以上命令,则会得到以下信息:

[u'Sheet1']

因此表明我们有一张名为Sheet1图纸。

如果您有多个工作表,则可以使用以下方法按名称访问特定工作表: get_sheet_by_name()

访问单元

既然我们已经学习了如何打开Excel文件并获取工作表,让我们看看访问该工作表中的单元格有多容易。 您要做的就是检索该工作表,然后确定单元格的位置(坐标)。 假设我们要访问我们拥有的Excel文档中的A列第2行,即A2 。 可以如下实现:

sheet = excel_document.get_sheet_by_name('Sheet1')
print sheet['A2'].value

在这种情况下,您将返回以下值: Abder

我们还可以使用行列表示法。 例如,如果要访问第5行和第2列的单元格,请键入以下内容:

sheet.cell(row = 5, column = 2).value

在这种情况下,输出为: programmer

如果要查看表示单元格的对象类型,可以键入:

print type(sheet['A2'])

要么:

print sheet.cell(row = 5, column = 2)

在这种情况下,您将获得以下输出:

<class 'openpyxl.cell.cell.Cell'>

这意味着该对象的类型为Cell

访问一系列单元格

如果您对访问一系列单元而不是仅一个单元感兴趣,该怎么办? 假设我们要访问从A1B3的单元格,在我们的Excel文档中看起来像这样?

Excel电子表格的单元格A1到B3

可以使用以下脚本完成此操作:

multiple_cells = sheet['A1':'B3']
for row in multiple_cells:
    for cell in row:
        print cell.value

在这种情况下,您将获得以下输出:

Name
Profession
Abder
Student
Bob
Engineer

访问所有行和列

OpenPyXL使您可以分别使用rows()columns()方法访问Excel文档中的所有行和列。

为了访问所有行,我们可以执行以下操作:

all_rows = sheet.rows
print all_rows[:]

注意,我们使用[:]表示法来访问所有 。 这是因为从whole_document返回的对象类型是一个tuple

上面脚本的输出如下:

((<Cell Sheet1.A1>, <Cell Sheet1.B1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>), (<Cell Sheet1.A3>, <Cell Sheet1.B3>), (<Cell Sheet1.A4>, <Cell Sheet1.B4>), (<Cell Sheet1.A5>, <Cell Sheet1.B5>), (<Cell Sheet1.A6>, <Cell Sheet1.B6>), (<Cell Sheet1.A7>, <Cell Sheet1.B7>))

另一方面,如果要访问所有 ,则只需执行以下操作:

all_columns = sheet.columns
print all_columns[:]

在这种情况下,您将获得以下输出:

((<Cell Sheet1.A1>, <Cell Sheet1.A2>, <Cell Sheet1.A3>, <Cell Sheet1.A4>, <Cell Sheet1.A5>, <Cell Sheet1.A6>, <Cell Sheet1.A7>), (<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>, <Cell Sheet1.B4>, <Cell Sheet1.B5>, <Cell Sheet1.B6>, <Cell Sheet1.B7>))

正如在OpenPyXL文档中所见,您当然可以对Excel文档做更多的事情

结论

在本教程中,我们注意到使用Python处理Excel文档的灵活性。 还记得本教程开头提到的场景吗? 值得尝试作为一个项目!

无论您是刚刚起步还是想学习新技能的经验丰富的程序员,都可以通过我们完整的python教程指南学习Python。

翻译自: https://code.tutsplus.com/tutorials/how-to-work-with-excel-documents-using-python--cms-25698

本文含有隐藏内容,请 开通VIP 后查看