五、处理excel 表格

1、安装第三方模块openpyxl

cmd 命令窗口输入:

pip install openpyxl

2、D:\python目录下,新建demo.xlsx文件,并编辑内容如下

苹果

红色

5元/斤

香蕉

黄色

3元/斤

橘子

橙色

6元/斤

柚子

黄色

5元/斤

3、读取Excel文档

1)openpyxl.load_workbook(‘文件名’):获取workbook对象

此时,这里的workbook对象就代表传入文件名的Excel文件
>>> import openpyxl
>>> excel = openpyxl.load_workbook('D:\\python\\demo.xlsx')
>>> type(excel)
<class 'openpyxl.workbook.workbook.Workbook'>

2)从该Excel文件工作簿中获取工作列表

>>> import openpyxl
>>> excel = openpyxl.load_workbook('D:\\python\\demo.xlsx')
>>> #该excel文件工作簿下的所有工作列表
>>> excel.sheetnames
['Sheet1', 'Sheet2', 'Sheet3']
>>> #获取某一表的WorkSheet对象
>>> sheet1=excel['Sheet1']
>>> sheet1.title
'Sheet1'
>>> type(sheet1)
<class 'openpyxl.worksheet.worksheet.Worksheet'>
>>> #获取当前活动表的WorkSheet对象
>>> sheetActive=excel.active
>>> sheetActive.title
'Sheet1'
>>> type(sheetActive)
<class 'openpyxl.worksheet.worksheet.Worksheet'>

3)从表中获取单元格的基本信息

>>> import openpyxl
>>> excel=openpyxl.load_workbook('D:\\python\\demo.xlsx')
>>> #获取表Sheet1
>>> sheet1=excel['Sheet1']
>>> #获取单元格A1的行标
>>> sheet1['A1'].row
1
>>> #获取单元格A1的列标
>>> sheet1['A1'].column
1
>>> #获取单元格A1的值
>>> sheet1['A1'].value
'苹果'
>>> #获取当前表数据的总行数
>>> sheet1.max_row
4
>>> #获取当前表数据的总列数
>>> sheet1.max_column
3

4)列标:字母和数字之间的转换

>>> #引入模块
>>> import openpyxl
>>> #引入函数
>>> from openpyxl.utils import get_column_letter,column_index_from_string
>>> #数字转字母
>>> get_column_letter(4)
'D'
>>> #字母转数字
>>> column_index_from_string('DD')
108

5)通过Worksheet对象切片,取得电子表格中的行和列

>>> #引入模块
>>> import openpyxl
>>> excel = openpyxl.load_workbook('D:\\python\\demo.xlsx')
>>> #获取表Sheet1
>>> sheet1=excel['Sheet1']
>>> for rows in sheet1['A1':'B2']:
...     for cell in rows:
...             print(cell.value)
...
苹果
红色
香蕉
黄色

4、写入Excel文档

1)创建并保存Excel文档

>>> #1、引入os模块
>>> import os
>>> #查看D:\\python文件夹下的文件
>>> os.listdir('D:\\python')
['demo', 'demo.xlsx', 'error.txt', 'mylog1.txt', 'new', 'new.zip', 'test']
>>> #引入openpyxl模块
>>> import openpyxl
>>> #新建一个工作簿
>>> excel = openpyxl.Workbook()
>>> #查看这个工作簿中的工作表
>>> excel.sheetnames
['Sheet']
>>> #进入Sheet工作表
>>> sheet=excel['Sheet']
>>> #获取该工作表的表名
>>> sheet.title
'Sheet'
>>> #修改Sheet工作表的名称
>>> sheet.title='NewSheet'
>>> sheet.title
'NewSheet'
>>> #保存这个新建的工作簿
>>> excel.save('D:\\python\\newExcelDemo.xlsx')
>>> #查看D:\\python文件夹下的内容
>>> os.listdir('D:\\python')
['demo', 'demo.xlsx', 'error.txt', 'mylog1.txt', 'new', 'new.zip', 'newExcelDemo.xlsx', 'test']
>>>

newExcelDemo.xlsx 如图:

Python处理表变化 用python处理表格_python

2)在刚新建的工作簿中,进行创建和删除工作表的操作

>>> #引入openpyxl模块
>>> import openpyxl
>>> #打开newExcelDemo.xlsx工作簿
>>> excel=openpyxl.load_workbook('D:\\python\\newExcelDemo.xlsx')
>>> #查看该工作簿下的工作表
>>> excel.sheetnames
['NewSheet']
>>> #-----------------------------------------------------------------------------创建工作表
>>> #创建一个默认的工作表
>>> excel.create_sheet()
<Worksheet "Sheet">
>>> excel.sheetnames
['NewSheet', 'Sheet']
>>> #创建一个名为Sheet1的工作表
>>> excel.create_sheet(title='Sheet1')
<Worksheet "Sheet1">
>>> excel.sheetnames
['NewSheet', 'Sheet', 'Sheet1']
>>> #在NewSheet工作表前边插入一个新的默认工作表
>>> excel.create_sheet(index=0)
<Worksheet "Sheet2">
>>> excel.sheetnames
['Sheet2', 'NewSheet', 'Sheet', 'Sheet1']
>>> #在NewSheet工作表前边插入一个新的工作表,表名为:Sheet333
>>> excel.create_sheet(index=1,title='Sheet333')
<Worksheet "Sheet333">
>>> excel.sheetnames
['Sheet2', 'Sheet333', 'NewSheet', 'Sheet', 'Sheet1']
>>> #----------------------------------------------------------------------------删除工作表
>>> #删除工作表的第一种用法:以删除Sheet333工作表为例
>>> excel.remove(excel['Sheet333'])
>>> excel.sheetnames
['Sheet2', 'NewSheet', 'Sheet', 'Sheet1']
>>> #删除工作表的第二种用法:以删除NewSheet工作表为例
>>> del excel['NewSheet']
>>> excel.sheetnames
['Sheet2', 'Sheet', 'Sheet1']
>>>>>> #--------------------------------------------------------------------------这里最后切记一定要保存该工作簿
>>> excel.save('D:\\python\\newExcelDemo.xlsx')
>>> #save('文件名')需要传入正确该文件名,如果传入的文件和最初的文件路径和名称不同时,相当于将编辑好的文件,进行复制到新的文件中,导致 最初文件没有发生改变

newExcelDemo.xlsx 如图:

Python处理表变化 用python处理表格_文件名_02

3)在刚新建的工作簿中,Sheet工作表中写入值

>>> #引入openpyxl模块
>>> import openpyxl
>>> excel=openpyxl.load_workbook('D:\\python\\newExcelDemo.xlsx')
>>> excel.sheetnames
['Sheet2', 'Sheet', 'Sheet1']
>>> #查看当前活动的工作表
>>> excel.active
<Worksheet "Sheet2">
>>> #可以看到是Sheet2,我们现在将活动工作表切换为Sheet
>>> excel.active=excel['Sheet']
>>> excel.active
<Worksheet "Sheet">
>>> #可以理解为进入Sheet工作表
>>> sheet=excel.active
>>> sheet
<Worksheet "Sheet">
>>> #设置A1单元格值
>>> sheet['A1'].value='你好'
>>> sheet['A1'].value
'你好'
>>> #简便方法:设置B1单元格的值
>>> sheet['B1']='世界'
>>> sheet['B1']
<Cell 'Sheet'.B1>
>>> sheet['B1'].value
'世界'
>>> #最后切记要保存文件到原路径,原名称
>>> excel.save('D:\\python\\newExcelDemo.xlsx')

newExcelDemo.xlsx 如图:

Python处理表变化 用python处理表格_python_03

5、设置单元格的字体风格

(1)引入openpyxl模块,并导入openpyxl.styles模块中的Font()函数和Style()函数

import openpyxl
from openpyxl.styles import Font

(2)新建一个xlsx文件或打开一个xlsx文件,这里选择打开一个存在的demo.xlsx文件,如下图:

Python处理表变化 用python处理表格_表数据_04

# 新建:excel = openpyxl.Workbook()
excel = openpyxl.load_workbook('D:\\python\\demo.xlsx')

(3)获取demo.xlsx文件中,工作表Sheet1

sheet = excel['Sheet1']

(4)设置苹果字体大小为20,设置‘红色’字体颜色为红色,并加粗

font1 = Font(size=20)
font2 = Font(bold=True,color='FF0000')
sheet['A1'].font=font1
sheet['B1'].font=font2

(5)保存编辑后的文档

excel.save('D:\\python\\demo.xlsx')

(6)打开demo.xlsx,结果如图:

Python处理表变化 用python处理表格_后端_05

如需了解更多,请前往openpyxl官方网站,查看最新、最详细的说明文档。