python3+openpyxl库,进行excel操作

一 相关说明:

1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用 xlrd和xlwt库进行操作
2、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode

3、workbook: 工作簿,一个excel文件包含多个sheet。

4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。

5、cell: 单元格,存储数据对象

二 openpyxl的使用方法

1. 新建

import openpyxl

# 新建一个空excel,默认表名为 "Sheet",文件名为test
wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
wb.save('test.xlsx')

2.表操作

注:从此操作往后都使用如下的测试数据

import openpyxl
import openpyxl.styles

# 打开已有的excel
wb = openpyxl.load_workbook("test.xlsx")

# ------------------ 表操作 ------------------
# 新建sheet表
wb.create_sheet(index=2, title="sheet3")  # 可通过index控制创建的表的位置

# 获取所有表名
sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']

# 根据表名删除sheet表
wb.remove(wb[sheet_names[2]])  # 删除上一步建的第3个工作表

# 根据表名打开sheet表
sheet1 = wb[sheet_names[0]]  # 打开第一个 sheet 工作表

# 修改表名
sheet1.title = "sheet1"

3.读取数据

# ------------------ 读取数据 ------------------

# 获取单元格数据
sheet1_max_colum = sheet1.max_column  # 获取最大列数 结果:3
# ws = wb.active  # 获取当前活动的sheet页
sheet1_max_row = sheet1.max_row  # 获取最大行数 结果:10
A1_value = sheet1['A1'].value  # 获取单元格A1值 结果:a1
A1_column = sheet1['A1'].column  # 获取单元格A1列值 结果: A
A1_row = sheet1['A1'].row   # 获取单元格A1行号 结果: 1
A1 = sheet1.cell(row=1, column=1).value  # 获取第一行第一列的单元格值 结果:a1

# 获取C列的所有数据
list_sheet1_column_C = []
for i in sheet1["C"]:
    list_sheet1_column_C.append(i.value)

# 获取第1行的所有数据
list_sheet1_row_1 = []
for i in sheet1[1]:
    list_sheet1_row_1.append(i.value)

# 读取所有数据
list_sheet1_all = []
for row in sheet1.rows:
    for cell in row:
        list_sheet1_all.append(cell.value)  # 按行循环获取所有的值,保存在 list_sheet1_all 列表中

4.写入数据

# ------------------ 写入数据 ------------------
sheet1.cell(row=1, column=2, value="B1")  # 修改第一行第二列的单元格的值为B1
sheet1["A1"] = "A1"  # 直接修改A1单元格的值为A1
sheet1["B11"] = "B11"  # 新增B11单元格的值为B11
sheet1.title = "test_sheet"  # 修改sheet1的表名为test_sheet

5.删除数据

sheet1.delete_rows(2)  # 删除第二行

6.表格样式调整

# ------------------ 表格样式调整 ------------------
# 表格样式支持:字体、颜色、模式、边框、数字格式等

# B11单元格 等线24号加粗斜体,字体颜色浅蓝色
sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)

# 或者如下方式把第一行第4列文字设置为红色
# sheet1.cell(row=1, column=4).font = openpyxl.styles.Font(color="FF0000")  # 颜色变为红色

# B11单元格 水平上下居中
sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")

# 第一行高度设置为30
sheet1.row_dimensions[1].height = 30

# C列的宽度设置为35
sheet1.column_dimensions["C"].width = 35

# 如下方式可批量设置指定区域的单元格
# sheet1格式设置 指定区域30行6列 批量设置单元格格式
for rows in sheet1.iter_rows(min_row=1, max_row=30, min_col=1, max_col=8):
	for cell in rows:
		if cell.column == "D" or cell.column == "H":  # cell.column 获取当前单元格的列号
			cell.alignment = openpyxl.styles.Alignment(horizontal="left", vertical="center", wrapText=True)
			# D和H列水平居左 上下居中 自动换行
		else:
			cell.alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center", wrapText=True)
			# 其他水平居中 上下居中 自动换行

7.保存关闭文件

wb.save("test.xlsx")  # 注意 excel被手动打开后,保存会失败
wb.close()

8.测试结果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值