Day7 代码操作Excel

本文介绍了如何使用Python的第三方库openpyxl进行Excel文件的操作,包括安装库(如更改国内镜像源)、读取Excel文件(工作簿、工作表、单元格等概念)以及写入操作。同时,讲解了如何修改Excel文件的样式,如设置行高、列宽、字体、填充色、边框和对齐方式。
摘要由CSDN通过智能技术生成

Day 7

重点

1.第三方库的安装

1) 直接搜索安装 或者用镜像安装[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpvurQrB-1676376283935)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20230214095659663.png)]
2)更改国内镜像源(后面镜像源换就行)

安装命令

pip config set global.index-url ![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://pypi.tuna.tsinghua.edu.cn/simple/

Python国内镜像地址:

1.阿里云:![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://mirrors.aliyun.com/pypi/simple/
2.豆瓣:![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://pypi.douban.com/simple/
3.清华大学:![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://pypi.tuna.tsinghua.edu.cn/simple/(推荐)
4.中国科学技术大学 ![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://pypi.mirrors.ustc.edu.cn/simple/
5.华中理工大学:![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)https://pypi.hustunique.com/
6.山东理工大学:![img](file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\`7_{~]GF$3{MOQ4V_}PH]YC.png)https://pypi.sdutlinux.org/

2. Excel 文件的读操作

1. excel 相关操作

1)工作簿(workbook):一个Excel文件就是一个工作簿

2)工作表(sheet):工作表是工作簿的基本单位,每个工作簿至少要有一个工作表

3)单元格(cell):工作表中每一个用来保存数据的格子就是单元格

4)行(raw)号:每一行前面的数字(从1开始)

5)列(column)号:每一列上面的大写字母(也可以用数字1开头,表示列号)最大为256列

1.打开Excel文件(加载Excel文件)

​ 1)openpyxl.open(Excel文件地址)
​ 2)openpyxl/load_workbook(Excel文件地址)

wb =openpylx.open('files/example.xlsx')
wb = openpyxl.load_workbook('files/example.xlsx')
2.获取工作簿所有的工作表名字

​ 工作簿对象 .sheetnames

names = wb.sheetnames
print(names)  # ['表1','表2','表3']
3.获取工作表
1)工作簿.active       -       当前工作簿的活跃表
sheet1 = wb.active
print(sheet1)

​ 2)工作簿[表名] - 获取工作簿中指定表名对应的工作表

sheet2 = wb['表1']
print(sheet2)
4.获取最大行数和最大列数

​ 1)工作表.max_row

​ 2)工作表.max_column

m_r = sheet2.max_row
m_c = sheet2.max_column
print(m_r, m_c)

print(wb['Sheet1'].max_row, wb['Sheet1'].max_column)
5.获取单元格

​ #工作表.cell(行号,列号)

cell1=sheet2.cell(2,2)
cell2 =sheet2.cell(2,3)
cell3 =sheet2.cell(3,2)
print(cell1,cell2,cell3)
6.获取单元格中的内容

​ 单元格.value

print(cell1.value)
print(cell2.value)
print(cell3.value)

总的

import openpyxl

# 1.打开Excel文件(加载Excel文件)
# 1)openpyxl.open(Excel文件地址)
# 2)openpyxl/load_workbook(Excel文件地址)
# wb =openpylx.open('files/example.xlsx')
wb = openpyxl.load_workbook('files/example.xlsx')

# 2.获取工作簿所有的工作表名字
# 工作簿对象.sheetnames
names = wb.sheetnames
print(names)  # ['表1','表2','表3']

# 3.获取工作表
# 1)工作簿.active       -       当前工作簿的活跃表
sheet1 = wb.active
print(sheet1)

# 2)工作簿[表名]      -       获取工作簿中指定表名对应的工作表
sheet2 = wb['表1']
print(sheet2)

# 4.获取最大行数和最大列数
# 1)工作表.max_row
# 2)工作表.max_column
m_r = sheet2.max_row
m_c = sheet2.max_column
print(m_r, m_c)

print(wb['Sheet1'].max_row, wb['Sheet1'].max_column)

#5.获取单元格
#工作表.cell(行号,列号)
cell1=sheet2.cell(2,2)
cell2 =sheet2.cell(2,3)
cell3 =sheet2.cell(3,2)
print(cell1,cell2,cell3)

#6.获取单元格中的内容
#单元格.value
print(cell1.value)
print(cell2.value)
print(cell3.value)

3. Excel文件的写操作

注意:Excel文件任何相关写操作,只会在保存以后有效

1.新建Excel文件(新建工作簿)

os.path.exists(‘文件或者文件夹路径’) - 判断指定的文件或者文件夹是否存在

import openpyxl
import os
# 新建Excel文件(新建工作簿)
# os.path.exists('文件或者文件夹路径')      -     判断指定的文件或者文件夹是否存在
wb1 = openpyxl.Workbook()
# 保存文件
wb1.save('files/example2.xlsx')
# 如果example3.xlsx文件不存在就创建,存在就打开,不存在的话,就创建
if os.path.exists(('files/example3.xlsx')):
    wb2 = openpyxl.load_workbook('files/example3.xlsx')
else:
    wb2 = openpyxl.Workbook()
    wb2.save('files/example3.xlsx')
2.新建工作表

工作簿 . creat _sheet()

工作簿 . creat _sheet(表名)

工作簿 . creat _sheet(表名,下标)

# sheet1 =wb2.create_sheet()
# sheet1 =wb2.create_sheet('student')
# sheet3 = wb2.create_sheet('teacher',0)

# 案例:如果teacher表不存在就创建这张表,存在就获取teacher表
if 'teacher' in wb2.sheetnames:
    sheet3 =wb2['teacher']
else:
    sheet3 =wb2.create_sheet('teacher',0)
3.删除表

工作簿.remove(工作表)

#wb2.remove(wb2['Sheet2'])

if 'Sheet1' in wb2.sheetnames:
    wb2.remove(wb2['Sheet1'])
4.修改单元格内容

单元格.value =内容

sheet3.cell(2,1).value='小明'
sheet3.cell(1,3).value='Tel'
sheet3.cell(1,2).value=None

wb2.save('files/example3.xlsx')			#最后一定要保存

总的

import openpyxl
import os
# 1.新建Excel文件(新建工作簿)
# os.path.exists('文件或者文件夹路径')      -     判断指定的文件或者文件夹是否存在
wb1 = openpyxl.Workbook()
# 保存文件
wb1.save('files/example2.xlsx')
# 如果example3.xlsx文件不存在就创建,存在就打开,不存在的话,就创建
if os.path.exists(('files/example3.xlsx')):
    wb2 = openpyxl.load_workbook('files/example3.xlsx')
else:
    wb2 = openpyxl.Workbook()
    wb2.save('files/example3.xlsx')
# 2.新建工作表
# 工作簿.creat_sheet()
# 工作簿.creat_sheet(表名)
# 工作簿.creat_sheet(表名,下标)
# sheet1 =wb2.create_sheet()
# sheet1 =wb2.create_sheet('student')
# sheet3 = wb2.create_sheet('teacher',0)

# 案例:如果teacher表不存在就创建这张表,存在就获取teacher表
if 'teacher' in wb2.sheetnames:
    sheet3 =wb2['teacher']
else:
    sheet3 =wb2.create_sheet('teacher',0)

# 3.删除表
#工作簿.remove(工作表)
#wb2.remove(wb2['Sheet2'])

if 'Sheet1' in wb2.sheetnames:
    wb2.remove(wb2['Sheet1'])

#4.修改单元格内容
#单元格.value =内容
sheet3.cell(2,1).value='小明'
sheet3.cell(1,3).value='Tel'
sheet3.cell(1,2).value=None

wb2.save('files/example3.xlsx')

4. Excel文件样式的修改

颜色值转换

https://www.sioe.cn/yingyong/yanse-rgb-16/

颜色库

https://www.baidu.com/search/hi/hi_css.html

1.设置行高和列宽度

1)工作表.row_dimensions[行号].height = 高度

2)工作表.column_dimensions[列号(字母)].width = 宽度

sheet1.row_dimensions[1].height = 30
sheet1.column_dimensions['A'].width = 30
2.设置单元格字体样式

1)创建字体对象

# 导入字体类
from openpyxl.styles import Font
f1 = Font(
    name='黑体',
    size=15,
    color='CC00FF',
    strike=True,
    bold=True,
    italic=True,
    underline='single'
)

2)设置单元格字体

sheet1.cell(1, 1).font = f1
3.设置填充样式
from openpyxl.styles import PatternFill
# 1)创建填充对象
fill1 = PatternFill(
    fill_type='darkDown',
    start_color='FFFF00',
    end_color='FF0000'
)

sheet1.cell(1, 2).fill = fill1
4.设置边框样式
from openpyxl.styles import Side, Border
# 1)创建边
s1 = Side(
    border_style='medium',
    color='ff0000'
)
s2 = Side(
    border_style='mediumDashDot',
    color='00ff00'
)
# 2)创建边框
b1 = Border(
    top=s1,
    bottom=s1,
    left=s1,
    right=s1
)
b2 = Border(
    top=s2,
    bottom=s1,
    # left=s2,
    # right=s2
)

# 3)设置单元格的边框
sheet1.cell(4, 2).border = b1
sheet1.cell(6, 2).border = b2

wb.save('files/example3.xlsx')
5. 设置单元格对齐样式
#1)创建对象*
al = Alignment(        
	horizontal='right',     # 水平方向center, left, right*      vertical='top'       # 垂直方向: center, top, bottom* ) 
#2) 设置单元格的对齐方式
 sheet['B2'].alignment = al 

总的

import openpyxl

wb = openpyxl.open('files/example3.xlsx')
# sheet1 = wb['teacher']
sheet1 = wb.active

# 1. 设置行高和列宽度
# 1)工作表.row_dimensions[行号].height = 高度
# 2)工作表.column_dimensions[列号(字母)].width = 宽度
sheet1.row_dimensions[1].height = 30
sheet1.column_dimensions['A'].width = 30

# 2.设置单元格字体样式
# 1)创建字体对象
# 导入字体类
from openpyxl.styles import Font
f1 = Font(
    name='黑体',
    size=15,
    color='CC00FF',
    strike=True,
    bold=True,
    italic=True,
    underline='single'
)

# 2)设置单元格字体
sheet1.cell(1, 1).font = f1

# 3.设置填充样式
from openpyxl.styles import PatternFill
# 1)创建填充对象
fill1 = PatternFill(
    fill_type='darkDown',
    start_color='FFFF00',
    end_color='FF0000'
)

sheet1.cell(1, 2).fill = fill1

# 4.设置边框样式
from openpyxl.styles import Side, Border
# 1)创建边
s1 = Side(
    border_style='medium',
    color='ff0000'
)
s2 = Side(
    border_style='mediumDashDot',
    color='00ff00'
)
# 2)创建边框
b1 = Border(
    top=s1,
    bottom=s1,
    left=s1,
    right=s1
)
b2 = Border(
    top=s2,
    bottom=s1,
    # left=s2,
    # right=s2
)

# 3)设置单元格的边框
sheet1.cell(4, 2).border = b1
sheet1.cell(6, 2).border = b2

wb.save('files/example3.xlsx')

om openpyxl.styles import Side, Border

1)创建边

s1 = Side(
border_style=‘medium’,
color=‘ff0000’
)
s2 = Side(
border_style=‘mediumDashDot’,
color=‘00ff00’
)

2)创建边框

b1 = Border(
top=s1,
bottom=s1,
left=s1,
right=s1
)
b2 = Border(
top=s2,
bottom=s1,
# left=s2,
# right=s2
)

3)设置单元格的边框

sheet1.cell(4, 2).border = b1
sheet1.cell(6, 2).border = b2

wb.save(‘files/example3.xlsx’)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值