python删除单元格_⽤Python帮运营妹纸快速搞定Excel⽂档
Microsoft Office 被⼴泛⽤于商务和运营分析中, 其中 Excel 尤其受欢迎。Excel 可以⽤于存储表格数据、创建报告、图形趋势等。在深⼊研究⽤ Python 处理 Excel ⽂档之前,让我们先了解⼀些基本术语:
Spreadsheet(电⼦表格) 或者 Workbook(⼯作簿) – 指⽂件本⾝(.xls or .xlsx).
Worksheet(⼯作表) 或者 Sheet(表)–⼯作簿中的单个内容表,电⼦表格可以包含多个⼯作表。
Column(列) – ⽤英⽂字母标记的垂直数列,以“ A”开头。
Row(⾏) – 从1开始以数字标记的⽔平数列。
Cell(单元格) – 列和⾏的组合,例如“ A1”。
在本⽂中,我们来使⽤Python处理Excel电⼦表格。您将了解以下内容:
Python 读写 Excel 的第三⽅库
从⼯作簿中获取⼯作表
读取单元格数据
遍历⾏和列
写⼊ Excel 电⼦表格
添加和删除⼯作表
添加和删除⾏和列
⼤多数公司和⼤学都使⽤Excel,它可以⽤多种不同⽅式使⽤,并可以使⽤Visual Basic for Application
s(VBA)进⾏增强。但是,VBA有点笨拙,这就是为什么要学习如何将 Excel 与 Python 结合使⽤。
现在让我们了解如何使⽤ Python 处理 Microsoft Excel 电⼦表格!
Python 处理 Excel 的第三⽅库
您可以使⽤ Python 创建、读取和编写 Excel 电⼦表格。但是,Python 的标准库不⽀持使⽤ Excel,为此您需要安装第三⽅软件包。其中最受欢迎的是OpenPyXL,您可以在此处阅读其⽂档:
adthedocs.io/en/stable/
OpenPyXL 并不是您唯⼀的选择,其实还有其他⼏个⽀持 Microsoft Excel 的软件包:
xlrd – ⽤于读取旧格式的 Excel (.xls) ⽂件
xlwt – ⽤于写⼊旧格式的 Excel (.xls) ⽂件
xlwings – ⽤于新格式的Excel格式并具有宏功能
⼏年前,前两个曾经是 Python 操作 Excel ⽂档的最受欢迎的库。然⽽,这些软件包的作者已停⽌维护它们。xlwings软件包潜⼒很⼤,但是不能在所有平台上都起作⽤,并且需要安装 Microsoft Excel。
您将在本⽂中使⽤ OpenPyXL,因为它是在持续开发和维护的。OpenPyXL 不需要安装 Microsoft Excel,并且可以在所有平台上使⽤。你可以⽤ pip 命令来安装 OpenPyXL:
$ python -m pip install openpyxl
安装完成后,让我们了解如何使⽤ OpenPyXL 读取 Excel 电⼦表格!
从⼯作簿中获取⼯作表
第⼀步是到⼀个与 OpenPyXL ⼀起使⽤的Excel⽂件,本⽂项⽬的Github存储库中为您提供了⼀个books.xlsx⽂件。您可以通过以下⽹
址下载它:
github/driscollis/python101code/tree/master/chapter38_excel
您也可以⽤⾃⼰的⽂件,尽管您⾃⼰⽂件的输出内容与本⽂中的⽰例并不⼀样。
下⼀步是编写⼀些代码来打开电⼦表格。为此请创建⼀个名为open_workbook.py的新⽂件,并将以下代码添加到其中:
# open_workbook.pyfrom openpyxl import load_workbookdef open_workbook(path): workbook = load_workbook(filename=path) print(f'Worksheet nam
在上述⽰例中,您从 openpyxl 导⼊ load_workbook()函数,然后创建open_workbook()函数,以将其导⼊Excel电⼦表格的路径中。接
下来,使⽤load_workbook()创建⼀个openpyxl.workbook.workbook.Workbook对象。该对象使您可以访问电⼦表格中的⼯作表和单元格。它确实确实具有双重⼯作簿的名称,那不是错字!
open_workbook()函数的其余部分演⽰了如何打印出电⼦表格中所有当前定义的⼯作表,如何获取当前活动的⼯作表以及如何打印该⼯作
表的标题。
运⾏此代码时,将看到以下输出:
Worksheet names: ['Sheet 1 - Books']The title of the Worksheet is: Sheet 1 - Books
既然已经知道如何访问电⼦表格中的⼯作表,下⾯就可以继续访问单元格数据了!
读取单元格数据
使⽤Microsoft Excel时,数据存储在单元格中。您需要使 Python 能访问这些单元格,以便提取该数据。OpenPyXL使这个过程变得很简单。
创建⼀个名为workbook_cells.py的新⽂件,并添加以下代码:
# workbook_cells.pyfrom openpyxl import load_workbookdef get_cell_info(path): workbook = load_workbook(filename=path) sheet = workbook.active
此脚本将在 OpenPyXL ⼯作簿中加载 Excel ⽂件。您将获取当前⼯作表,然后打印出其标题和⼏个不同的单元格值。您可以通过以下⽅式
访问单元格:使⽤⼯作表对象,后跟⽅括号以及其中的列名和⾏号。例如,sheet ["A2"]将为您获取第2⾏ A列的单元格。要获取该单元格
的值,请使⽤value属性。
注意:这段代码使⽤的是 Python 3.8 中f-字符串格式化的新功能。如果使⽤较早的版本运⾏它,将会收到报错消息。
运⾏此代码时,将获得以下输出:
The title of the Worksheet is: Sheet 1 - BooksThe value of sheet["A2"].value='Title'The value of sheet["A3"].value='Python 101'cell.value='Mike Driscoll'
您可以尝试使⽤它的某些其他属性来获取有关单元格的其他信息。将以下函数添加到⽂件中,并在最后更新条件语句来运⾏它:
def get_info_by_coord(path): workbook = load_workbook(filename=path) sheet = workbook.active cell = sheet['A2'] print(f'Row {w}, Col {lumn}
在此⽰例中,您将使⽤单元格对象的⾏和列属性来获取⾏和列信息。注意,“ A”列映射为“ 1”,“ B”映射为“ 2”,等等。如果要遍
历Excel⽂档,则可以使⽤坐标属性来获取单元格名称。
运⾏此代码时,输出如下所⽰:
Row 2, Col 1 = Titlecell.value='Title' is dinate='A2'
说到遍历,让我们来看⼀下接下来该下⼀步的⽅法!
如果⼤家在学习中遇到困难,想⼀个python学习交流环境,可以加⼊我们的python裙,关注⼩编,并私信“01”即可进裙,领取
python学习资料,会节约很多时间,减少很多遇到的难题。
遍历⾏和列
python怎么读取xls文件有时,您将需要遍历整个Excel电⼦表格或电⼦表格的某些部分。OpenPyXL允许您以⼏种不同的⽅式执⾏此操作。创建⼀个名为
iterating_over_cells.py的新⽂件,并向其中写⼊以下代码:
# iterating_over_cells.pyfrom openpyxl import load_workbookdef iterating_range(path): workbook = load_workbook(filename=path) sheet = workbook.active
在这⾥,您加载了电⼦表格,然后遍历“ A”列中的所有单元格。对于每个单元格,将打印出单元格对象。如果要更精细地格式化输出,则
可以使⽤在上⼀节中提到的⼀些单元格属性。
这是通过运⾏此代码得到的:
# output truncated for brevity
输出被截断,因为默认情况下它将打印出很多单元格。OpenPyXL通过使⽤iter_rows()和iter_cols()函数提供了其他遍历⾏和列的⽅法。
这些⽅法接受下⾯⼏个参数:
min_row
max_row
min_col
max_col
您还可以添加⼀个values_only参数,该参数告诉OpenPyXL返回单元格⽽不是单元格对象的值。继续创建⼀个名为
iterating_over_cell_values.py的新⽂件,并将以下代码添加到其中:
# iterating_over_cell_values.pyfrom openpyxl import load_workbookdef iterating_over_values(path): workbook = load_workbook(filename=path) sheet
此代码演⽰了如何使⽤iter_rows()迭代Excel电⼦表格中的⾏并打印出这些⾏的值。运⾏此代码时,将获得以下输出:
('Books', None, None)('Title', 'Author', 'Publisher')('Python 101', 'Mike Driscoll', 'Mouse vs Python')
输出是⼀个Python元组,其中包含每⼀列中的数据。⾄此,您已经了解了如何打开电⼦表格并从特定单元格以及通过迭代读取数据。现
在,您准备学习如何使⽤OpenPyXL创建Excel电⼦表格!
写⼊ Excel 电⼦表格
使⽤OpenPyXL写⼊Excel电⼦表格不需要很多代码。您可以使⽤Workbook()类创建电⼦表格。继续创建⼀个名为Writing_hello.py的新
⽂件,并添加以下代码:
# writing_hello.pyfrom openpyxl import Workbookdef create_workbook(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = 'Hello'
在这⾥,初始化Workbook()并获取当前⼯作表。然后将“ A”列中的前三⾏设置为不同的字符串。最后,调⽤save()函数并向其传递新⽂
档保存到的路径。恭喜你!您刚刚使⽤Python创建了⼀个Excel电⼦表格。
接下来,让我们看⼀下如何在⼯作簿中添加和删除⼯作表!
添加和删除⼯作表
许多⼈喜欢在⼯作簿中的多个⼯作表中处理数据。OpenPyXL⽀持通过其create_sheet()⽅法向Workbook()对象添加新⼯作表。
创建⼀个名为creating_sheets.py的新⽂件,并添加以下代码:
# creating_sheets.pyimport openpyxldef create_worksheets(path): workbook = openpyxl.Workbook() print(workbook.sheetnames) # Add a new work
在这⾥,您使⽤了两次create_sheet()将两个新的⼯作表添加到⼯作簿中。第⼆个⽰例显⽰了如何设置⼯作表的标题以及在哪个索引处插⼊
⼯作表。参数index = 1表⽰该⼯作表将在第⼀个现有⼯作表之后添加,因为它们的索引从0开始。
运⾏此代码时,将看到以下输出:
['Sheet']['Sheet', 'Sheet1']['Sheet', 'Second sheet', 'Sheet1']
您可以看到新⼯作表已逐步添加到您的⼯作簿中。保存⽂件后,可以通过打开Excel或另⼀个与Excel兼容的应⽤程序来验证是否存在多个⼯
作表。
在完成⾃动⼯作表创建过程之后,突然有了太多的⼯作表,因此让我们来删除⼀些⼯作表。有两种⽅法可以删除⼯作表, 继续并创建
delete_sheets.py⽂件,以了解如何使⽤ Python 的 del⽅法删除⼯作表:
# delete_sheets.pyimport openpyxldef create_worksheets(path): workbook = openpyxl.Workbook() ate_sheet() # Insert a worksheet w
此代码将创建⼀个新的⼯作簿,然后向其中添加两个新的⼯作表。再使⽤Python的del⽅法删除workbook['Second sheet']。您可以通过
查看在使⽤del命令之前和之后⼯作表列表的打印输出来验证它是否按预期⼯作:
['Sheet', 'Second sheet', 'Sheet1']['Sheet', 'Sheet1']
从⼯作簿中删除⼯作表的另⼀种⽅法是使⽤remove()⽅法。创建⼀个名为remove_sheets.py的新⽂件,并输⼊以下代码以了解其⼯作原理:
# remove_sheets.pyimport openpyxldef remove_worksheets(path): workbook = openpyxl.Workbook() sheet1 = ate_sheet() # Insert a w
此时您可以通过将结果分配给sheet1来保留对所创建的第⼀个⼯作表的引⽤。然后稍后在代码中将其删除。另外,您也可以使⽤与之前相
同的语法删除该⼯作表,如下所⽰:
⽆论选择哪种⽅法删除⼯作表,输出内容都将相同:
['Sheet', 'Second sheet', 'Sheet1']['Sheet', 'Second sheet']
现在,继续学习如何添加和删除⾏和列。
添加、删除⾏和列
OpenPyXL具有⼏种的⽅法,可⽤于在电⼦表格中添加、删除⾏和列。这是在本节中将要学习的四种⽅法:
.insert_rows()
.delete_rows()
.insert_cols()
.delete_cols()
每⼀个都可以使⽤下⾯两个参数:
idx –插⼊⾏或列的索引
amount–要添加的⾏数或列数
要查看其⼯作原理,请创建⼀个名为insert_demo.py的⽂件,并向其中添加以下代码:
# insert_demo.pyfrom openpyxl import Workbookdef inserting_cols_rows(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = 'Hello
在这⾥,您将创建⼀个⼯作表,并在“ A”列之前插⼊⼀个新列。列的索引从1开始,⽽⼯作表的索引从0开始。这有效地将A列中的所有单元格移到B列。然后从第2⾏开始插⼊两个新⾏。
现在您知道了如何插⼊列和⾏,是时候来了解如何删除它们了。
要了解如何删除列或⾏,请创建⼀个名为delete_demo.py的新⽂件并添加以下代码:
# delete_demo.pyfrom openpyxl import Workbookdef deleting_cols_rows(path): workbook = Workbook() sheet = workbook.active sheet['A1'] = 'Hello
此代码在多个单元格中创建⽂本,然后使⽤delete_cols()删除A列。它还通过delete_rows()从第⼆⾏开始删除两⾏。在处理数据时,能够
添加、删除列和⾏会⾮常有⽤。
总结
由于Excel在许多⾏业中得到⼴泛使⽤,因此能够使⽤Python与Excel⽂件进⾏交互是⼀项⾮常有⽤的技能,⽐如帮妹纸处理运营数据。在
本⽂中,您掌握了以下内容:
Python 处理 Excel的第三⽅软件包
从⼯作簿中获取⼯作表
读取单元格数据
遍历⾏和列
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论