Python获取excel内容,写数据到excel,设置单元格样式Python没有⾃带openyxl,需要安装: pip install openyxl
打开excel⽂档: openyxl.load_workbook(excel地址) - 打开现有excel⽂件
openyxl.Workbook() - 新建⼀个excel⽂件
返回⼀个⼯作博对象
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
print(type(wb)) # <class 'openpyxl.workbook.workbook.Workbook'>
openpyxl.load_workbook()函数,传⼊⼀个存在的excel⽂件名称/excel⽂件名称+⽂件路径,返回⼀个workbook对象。
从workbook对象中获取⼯作表
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
# print(type(wb)) # <class 'openpyxl.workbook.workbook.Workbook'>
# ⼯作簿对象.sheetnames - 获取当前⼯作簿中所有表的名字
# print(wb.sheetnames) ['Sheet1', 'Sheet2', 'Sheet3']
# ⼯作簿对象.active - 获取当前活动表对应的Worksheet对象
# print(wb.active) <Worksheet "Sheet1">
# ⼯作簿对象[表名] - 根据表名获取指定表对象
# print(wb["Sheet2"]) <Worksheet "Sheet2">
# 表对象.title - 获取表对象的表名
ws = wb["Sheet1"]
# print(ws.title) Sheet1
# 表对象.max_row - 获取表中最多有多少⾏
# print(ws.max_row) 15
# 表对象.max_column - 获取表有多少列
print(ws.max_column) # 3
从表中取得单元格
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 表对象['列号⾏号'] - 获取指定列的指定⾏对应的单元格对象(单元格对象是 Cell 类的对象,列号是从A开始,⾏号是从1开始)
a = ws["A1"]
# print(a) # <Cell 'Sheet1'.A1>
# 单元格对象.value - 获取单元格中的内容
print(a.value)
# 单元格对象.row - 获取⾏号(数字1开始)
w)
# 单元格对象.column - 获取列号(数字1开始)
lumn)
# 单元格对象.coordinate - 获取位置(包括⾏号和列号)
dinate)
# 表对象.iter_rows() - ⼀⾏⼀⾏的取
row_s = ws.iter_rows()
for a in row_s:
for i in a:
print(i.value)
# 表对象.iter_cols() - 列表⼀列的取
col_s = ws.iter_cols()
for c in col_s:
for j in c:
print(j.value)
⽤字母来指定列时会出现列Z之后⽤两个字母代替,可以调⽤表的cell()⽅法,传⼊整数作为⾏数和列数,第⼀⾏或者第⼀列的整数是1,⽽不是0
表对象.cell(⾏号,列号)
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 获取第⼆列的所有内容
max_row = ws.max_row
for row in range(1, max_row + 1):
cell = ws.cell(row, 2)
print(cell.value)
从表中取得列和⾏
取电⼦表格中⼀⾏、⼀列或⼀个矩形区域中的所有 Cell 对象
表对象[位置1:位置2] 获取指定范围内的所有单元格
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_row = ws.max_row
column = get_column_letter(max_row)
# 获取第⼀列所有单元格对象
row2 = ws["A1":f"{column}1"]
ss = [(dinate, cell.value) for cells in row2 for cell in cells]
print(ss)
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_cols = ws.max_column
column = get_column_letter(max_cols)
# 获取第⼀⽚区域所有单元格对象
row2 = ws["A1":f"{column}3"]
ss = [(dinate, cell.value) for cells in row2 for cell in cells]
print(ss)
创建并保存Excel⽂档
openpyxl.Workbook() - 创建空的Excel⽂件对应的⼯作薄对象
⼯作薄对象.save(⽂件路径) - 保存⽂件
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 修改sheet的名称
ws.title = "hello_world"
wb.save("test.xlsx")
创建和删除sheet
⼯作薄对象.create_sheet(title, index) - 在指定⼯作薄中的指定位置(默认是最后)创建指定名字的表,并返回表对象
⼯作薄对象.remove(表对象) - 删除⼯作薄中的指定表
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
print(wb.sheetnames)
print(wb.sheetnames)
print(wb.sheetnames)
print(wb.sheetnames)
wb.save("test.xlsx")
将数据写⼊表格中
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
python怎么读取excel的数据
ws = wb["hello_world"]
# ⽅式⼀
ws["A4"] = "hello_world"
# ⽅式⼆
wb.save("test.xlsx")
设置单元格样式
⽤表格展⽰数据的时候,有的时候需要对不同的数据以不同的风格进⾏展⽰从⽽达到分区或者强调的作⽤。
import openpyxl
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
# 1.打开⼯作薄
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["hello_world"]
# 2.设置单元格字体样式
"""
Font(
name=None, # 字体名,可以⽤字体名字的字符串
strike=None, # 删除线,True/False
color=None, # ⽂字颜⾊
size=None, # 字号
bold=None, # 加粗, True/False
italic=None, # 倾斜,Tue/False
underline=None # 下划线, 'singleAccounting', 'double', 'single', 'doubleAccounting'
)
"""
# 1:创建字体对象
font1 = Font(
size=20,
italic=True,
color="ff0000",
bold=True,
strike=True
)
# 2:设置指定单元格的字体
# 单元格对象.font = 字体对象
ws["B2"].font = font1
# 3:设置单元格填充样式
"""
PatternFill(
fill_type=None, # 设置填充样式: 'darkGrid', 'darkTrellis', 'darkHorizontal', 'darkGray', 'lightDown', 'lightGray', 'solid', 'lightGrid', 'gray125', 'lightHorizontal', 'lightTrellis', 'darkDown', 'mediumGray', 'gray0625', 'darkUp', 'darkVertical', 'lightVertical', 'ligh start_color=None # 设置填充颜⾊
)
"""
fill = PatternFill(
fill_type="solid",
start_color="ffff00"
)
ws["B2"].fill = fill
# 设置单元格对齐样式
al = Alignment(
horizontal="right", # ⽔平向⽅: center 靠左:left 靠右: right
vertical="top"# 垂直⽅向: center, top, bottom
)
ws["B2"].alignment = al
# 设置边框样式
# 设置边对象(四个边可以是⼀样的也可以不同,如果不同就创建多个Side对象)
side = Side(border_, color="0000ff")
# 设置边框对象(left、right、top、bottom表⽰的是边框的四个边,这⼉四个边使⽤的是⼀个边对象)
db = Border(left=side, right=side, top=side, bottom=side)
ws["B2"].border = db
# 设置单元格的宽度和⾼度
# 设置指定列的宽度
# 设置指定⾏的⾼度
wb.save("test.xlsx")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论