首页 > 编程语言 >Python 处理 Excel 表格

Python 处理 Excel 表格

时间:2022-11-25 14:08:04浏览次数:43  
标签:sheet wb 表格 Python 单元格 Excel column Sheet openpyxl

安装 openpyxl 模块



    在 Python 中没有自带的处理 Excel 表格的模块,所以我们在 Windows上使用 ​​pip install --user openpyxl​​​ 命令安装第三方模块 ​​openpyxl​​ 。



读取 Excel 表格



    使用 ​​openpyxl.load_workbook()​​​ 函数,传入路径和文件名,返回 ​​workbook​​​ 数据类型的值。 ​​workbook​​​ 的 ​​sheetnames​​ 属性,获取 Excel 文档所有表名的列表。

    每个表都是由一个 ​​Worksheet​​​ 对象,使用中括号 ​​workbook['sheetname']​​​ 可以获取相应表的 ​​Worksheet​​ 对象。

​Worksheet​​ 对象的属性和方法:

  • ​title​​ 属性,获取字符串格式的表名。
  • ​active​​​ 属性,获取活动表的 ​​Worksheet​​ 对象。
  • ​max_row​​ 属性,获取表的总行数。
  • ​max_column​​ 属性,获取表的总列数。
  • ​cell(row, column)​​​ 方法,获取单元格 ​​Cell​​ 对象。

    使用 ​​worksheet['site']​​​ 获取单元格 ​​Cell​​ 对象。

​Cell​​ 对象的属性:

  • ​value​​ 属性可以获取单元格的值。
  • ​row​​ 属性可以获取单元格的行值。
  • ​column​​ 属性可以获取单元格的列值。
  • ​coordinate​​ 属性可以获取单元格的位置信息。

下面的例子演示了如何读取 Excel 表格,以及如何获取特定单元行和列的值。

example.xlsx 表如下:

Python 处理 Excel 表格_表名


>>> import openpyxl
>>> wb = openpyxl.load_workbook('D:\\example.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>
>>> wb.sheetnames
['Sheet1', 'Sheet2']
>>> sheetA = wb['Sheet2']
>>> sheetA
<Worksheet "Sheet2">
>>> type(sheetA)
<class 'openpyxl.worksheet.worksheet.Worksheet'>
>>> sheetA.title
'Sheet2'
>>> sheetB = wb.active
>>> sheetB
<Worksheet "Sheet1">
>>> sheetB.cell(row=2, column=1)
<Cell 'Sheet1'.A2>
>>> sheetB.max_row
7
>>> sheetB.max_column
2
>>> sheetB['A2']
<Cell 'Sheet1'.A2>
>>> sheetB['A2'].value
'spite'
>>> sheetB['A2'].row
2
>>> sheetB['A2'].column
1
>>> sheetB['A2'].coordinate
'A2'
>>> for i in range(1, 6):
print(i, sheetB.cell(row=i, column=1).value, sheetB.cell(row=i, column=2).value)



1 Words Meaning
2 spite n.恶意,怨恨;不顾vt.刁难,欺侮
3 pyramid n.金字塔;椎体
4 tenure n.任期;(土地)保有权,保有期;(大学教师等被授予的)终身职位
5 carbohydrate n.碳水化合物;糖类;[pl.]含碳水化合物的食物


    使用 ​​openpyxl.utils​​​ 模块中的 ​​get_column_letter()​​​ 函数可以将表示列的数字值转换为字母值, ​​column_index_from_string()​​ 函数可以将表示列的字母值转换为数字值。

>>> import openpyxl
>>> from openpyxl.utils import get_column_letter, column_index_from_string
>>> get_column_letter(3)
'C'
>>> column_index_from_string('D')
4



创建和保存 Excel 表格



    使用 ​​openpyxl.Workbook()​​​ 可以创建一个空的 ​​Workbook​​​ 对象,通过调用 ​​sheetnames​​​ 属性可以看到,它自动为我们创建了一个名为 ​​Sheet​​​ 的表,可以直接用赋值语句修改表名,切记,只有在调用 ​​save(filename)​​ 方法后才会对表格进行保存。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.sheetnames
['Sheet']
>>> sheet = wb.active
>>> sheet.title
'Sheet'
>>> sheet.title = 'table'
>>> sheet.title
'table'
>>> wb.save('D:\\excelTest.xlsx')



增加或删除表



    使用 ​​create_sheet(index, title)​​​ 方法可以在 ​​Excel​​​ 文档中添加一个新的空表,参数 ​​index​​​ 表示创建表的索引,参数 ​​title​​​ 表示表的名称,在为指定参数的情况下,默认创建的新表在其他表格的最后,该方法会返回一个名为 ​​SheetX​​​ 的 ​​Worksheet​​​ 对象。使用 ​​del​​​ 操作符可以删除指定的表。记住,在修改后要调用 ​​save()​​ 方法后才会对表格的修改进行保存。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.sheetnames
['Sheet']
>>> wb.create_sheet('New Sheet')
<Worksheet "New Sheet">
>>> wb.sheetnames
['Sheet', 'New Sheet']
>>> wb.create_sheet(index = 0, title = 'First Sheet')
<Worksheet "First Sheet">
>>> wb.sheetnames
['First Sheet', 'Sheet', 'New Sheet']
>>> del wb['New Sheet']
>>> wb.sheetnames
['First Sheet', 'Sheet']
>>> wb.save('D:\\excelTest.xlsx')



修改单元格的值



使用赋值语句可以直接修改单元格内容。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb['Sheet']
>>> sheet['A1'] = 'Caizi'
>>> sheet['A1'].value
'Caizi'
>>> wb.save('D:\\excelTest.xlsx')



设置单元格字体



    调用 ​​openpyxl.styles​​​ 的 ​​Font(name, size, bold, italic)​​​ 函数创建一个 ​​Font​​​ 对象,将该对象赋给 ​​Cell​​​ 对象的 ​​font​​​ 属性,即可对单元格字体格式进行修改。参数 ​​name​​​ 为字体名称的字符串形式,参数 ​​size​​​ 为字体大小的整数,参数 ​​bold​​​ 表示字体是否设置加粗( ​​True​​​ 表示粗体),参数 ​​italic​​​ 表示字体是否设置为斜体( ​​True​​ 表示斜体)。

>>> import openpyxl
>>> from openpyxl.styles import Font
>>> wb = openpyxl.Workbook()
>>> sheet = wb['Sheet']
>>> boldItalic20Font = Font(size=20, bold=True, italic=True)
>>> sheet['A1'] = 'Caizi'
>>> sheet['A1'].font = boldItalic20Font
>>> wb.save('D:\\font.xlsx')



为单元格添加公式



为单元格添加公式和我们直接在 Excel 中操作一致,直接把公式字符串赋给单元格。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet['A1'] = 100
>>> sheet['A2'] = 200
>>> sheet['A3'] = 300
>>> sheet['A4'] = 400
>>> sheet['A5'] = '=SUM(A1:A4)'
>>> wb.save('D:\\sum.xlsx')



设置行高和列宽



    使用 ​​sheet.row_dimensions[row].height​​​ 可以指定 ​​row​​​ 行的行高,使用 ​​sheet.column_dimensions[column].width​​​ 可以指定 ​​column​​ 列的列宽。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet.row_dimensions[1].height = 100
>>> sheet.column_dimensions['C'].width = 200
>>> wb.save('D:\\dimension.xlsx')



合并和拆分单元格



    使用 ​​sheet.merge_cells()​​​ 方法可以将指定区域的单元格进行合并。只需要设置合并前左上角的单元格的值就可以对合并的单元格进行赋值。使用 ​​sheet​​​.​​unmerge_cells()​​ 方法可以将指定区域的合并单元格进行拆分。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet.merge_cells('A1:C4')
>>> sheet['A1'] = 'Caizi'
>>> sheet.merge_cells('A5:B7')
>>> sheet['A5'] = 'excel'
>>> sheet.unmerge_cells('A5:B7')
>>> wb.save('D:\\merge.xlsx')


冻结单元格



    在显示一些特别大数据量的 Excel 表格中,我们经常冻结首行或者首列单元格,方便查看数据对应的属性。使用 ​​sheet.freeze_panes​​​ 属性可以将指定单元格的左边所有列和上面的所有行进行冻结,下面的例子设置为 ​​C3​​​ ,即把单元格 ​​C3​​ 上面的所有行(行1和行2)和左边的所有列(列A和列B)进行冻结。

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.active
>>> sheet.freeze_panes = 'C3'
>>> wb.save('D:\\freeze.xlsx')




标签:sheet,wb,表格,Python,单元格,Excel,column,Sheet,openpyxl
From: https://blog.51cto.com/u_15891283/5886615

相关文章

  • Python 操作压缩文件
        我们经常使用压缩程序对文件进行压缩打包,在Python中也提供了相应的zipfile模块方便我们对ZIP压缩文件进行操作。读取 ZIP 压缩文件    读取ZIP压缩文......
  • Python 文件路径
    获取主目录提到文件路径问题,不得不先提一下不同操作系统上文件夹之间的分隔符。在Windows操作系统上,路径的写法采用的是 \ 反斜杠。而在macOS和Linux操作系统上,路径......
  • 使用 Python 组织文件
        在 Python 中, shutil 模块还提供了一系列对文件和文件集合的高级操作。特别是提供了一些支持文件拷贝和删除的函数。下面介绍一些组织文件常用操作。复制文件 ......
  • Python入门(9)——函数
    函数是带名字的代码块,用于完成特定的任务,当在程序中多次执行同一任务时,无需反复编写重复的代码块,只需调用执行该任务的函数即可。函数的声明    在Python中使用 def ......
  • Python入门(10)——类
    在Python中,一切都是对象,对象是类的实例,类是对象的蓝图和模板。类是一个抽象的概念,对象是一个类具体的实例。每个对象都有属性和行为,它们都是独一无二的,而且对象一定属于某个......
  • Python入门(8)——集合
    集合的创建    集合是由不重复元素组成的无序容器。创建集合用 {} 大括号或 set() 函数。注意,创建空集合只能用 set() ,不能用 {} , {} 创建的是空字典。......
  • 最全的Python海龟绘图总结
    在Python中使用海龟绘图,需要导入相应的模块,那么什么是模块呢?逻辑上来说模块就是一组功能的组合;实质上一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上......
  • Python入门(7)——元组与字典
    元组元组的定义    不可修改的列表称为元组。元组定义与列表定义的区别在于列表使用 [] 标识,而元组使用 () 标识。严格地说,元组是由逗号 , 标识的,圆括号只是让......
  • Python入门(5)——分支与循环
    使用功能更强大的IDEPyCharm是一款功能强大的Python编辑器,具有跨平台性。学习分支语句及循环语句,为了我们调试方便,我们后期选择使用PyCharm,PyCharm可以直接到官网下载......
  • Python入门(6)——列表
    列表的定义列表是由一系列按特定顺序排列的元素组成。列表可以包含不同类型的元素。列表内元素的值可以重复。列表通常用单词名称的复数表示。列表用方括号 [] 表示,元素......