目录
在进入工作期间,我碰到了一些开发任务,是关于Python与Excel之间的操作,比如读取,写入。接下来,我将一边学习,一边做总结。Excel 是 Windows 环境下流行的、强大的电子表格应用。openpyxl 模块让 Python 程序能读取和修改 Excel 电子表格文件。
1. Excel文档基本定义
- 工作簿(workbook): 一个 Excel 电子表格文档;
- 工作表(sheet): 每个工作簿可以包含多个表, 如: sheet1, sheet2等;
- 活动表(active sheet): 用户当前查看的表;
- 列(column): 列地址是从 A 开始的;
- 行(row): 行地址是从 1 开始的;
- 单元格(cell): 特定行和列的方格;
2. 安装 openpyxl 模块
Python 没有自带 openpyxl,所以必须安装。
pip3 install openpyxL
3.读取已存在的Excel表
from openpyxl import load_workbook
#打开已存在的工作薄
wb = load_workbook('123.xlsx')
#新建页签--工作表
wb.create_sheet('SML')
#指定一个工作表
ws = wb['SML']
#指定活跃的一个表---关闭工作薄时处于哪个工作表
ws = wb.active
#读取指定单元格的数据
print(ws['B4'].value)
wb.save('123.xlsx)
这里要注意的是:运行时,记得关闭工作薄
4.新建工作薄
from openpyxl import Workbook
wb = Workbook()
#默认的是第一张工作表
ws.active()
#修改工作表的表名
ws.title('qq')
#添加数据:第一行从左向右依次添加
ws.append([123,234,456,567])
ws.save('new_excel.xlsx')
5.遍历工作表内容
from openpyxl.utils import get_column_letter
wb = load_workbook('new.xlsx')
ws = ws.active
# 列col,1代表的就是A.....
for row in range(1,5):
for col in range(1,6):
char = get_column_letter(col)
print(ws[char + str(row)].value) #char + str(row)相当于A1,B1,C1....
6.合并单元格
from openpyxl import load_workbook
wb = load_workbook('new.xlsx')
ws = wb.active
#合并单元格(对角线原则区域)
ws.merge_cells('A1:B2')
wb.save('new.xlsx')
7.插入,删除行和列
from openpyxl import load_workbook
wb = load_workbook('123.xlsx')
ws = wb.active
#插入单行,单列
ws.insert_rows(3)
ws.insert_cols(5)
#插入多行,多列
ws.insert_rows(idx=3,amount=4)
ws.insert_cols(idx=4,amount=6)
#删除
ws.delete_cols(2)
ws.delete_cows(3)
wb.save('123.xlsx')
8.移动数据表
move_range('A1:C5',row = 2,col = 2) 整体向下移动
9.往表中写入数据
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
data = [
{'name': 小米,
'age': 45,
'tall': 178,
},
{'name': 小米,
'age': 45,
'tall': 178,
},
{'name': 小米,
'age': 45,
'tall': 178,
}]
wb = load_workbook('123.xlsx')
ws = wb.active
title = ['姓名','年龄','升高']
ws.append(title)
for person in data:
ws.append(list(person.values())
for col in range(2,5):
char = get_column_letter(col)
ws[char + '7'] = f'=AVERAGE({char + '2'}:{char + '5'}
wb.save('123.xlsx')