2010版本以下的excel,支持用xlrd 读取,xlwt 编辑,xlutils 复制
2010版本及以上版本excel,支持用openpyxl 读取及编辑
pandas 一般用于数据的分析
1.安装 pip install openpyxl
2. 在pyCharm中找到interpreter点击+,输入openpyxl→install package即可
2.openpyxl模块的三大组件:1)工作簿,2)工作表, 3)单元格
1. 读取excel
import openpyxl
def read_excel(path):
"""读取excel,工作簿——→工作表——→单元格"""
# 获取工作簿
workbook = openpyxl.load_workbook(path)
# 获取工作表
worksheet = workbook["Sheet1"]
# 获取单元格数据(行和列均从1开始)
data = worksheet.cell(1, 2).value
# print(data)
# 获取最大行
rows = worksheet.max_row
print(rows)
# 获取最大列
cols = worksheet.max_column
print(cols)
# 获取所有数据,并将数据用字典列表的形式储存[{'id':1,'username':"","passwd":''},{},{}]
datas = []
# 循环每一行的数据
for row in range(2, rows+1): # 从第二行开始取值
data_dict = {}
# 循环每一列的数据
for col in range(1, cols+1):
key = worksheet.cell(1, col).value #第一行的数据做为key
value = worksheet.cell(row, col).value #其余行的数据作为value
data_dict[key] = value
# print(data_dict)
datas.append(data_dict)
print(datas)
2. 获取所有sheet页的数据
# 获取所有的工作表的数据
def read_allsheet(path):
# 获取工作簿
workbook = openpyxl.load_workbook(path)
# 获取工作簿中的所有表
worksheet_list = workbook.sheetnames
# 循环获取表数据,以字典的形式存储{sheet1:[],sheet2:[],sheet3:[]}
alldatas = {}
for worksheet in worksheet_list:
# 获取所有数据,并将数据用字典列表的形式储存[{'id':1,'username':"","passwd":''},{},{}]
datas = []
my_sheet = workbook[worksheet]
# 循环每一行的数据
for row in range(1, my_sheet.max_row + 1): # 从第二行开始取值
data_dict = {}
# 循环每一列的数据
for col in range(1, my_sheet.max_column + 1):
key = my_sheet.cell(1, col).value # 第一行的数据做为key
value = my_sheet.cell(row, col).value # 其余行的数据作为value
data_dict[key] = value
datas.append(data_dict)
key = worksheet
value = datas
alldatas[key] = value
print(alldatas)
2 创建excel文件—→创建sheet页—→写入数据
def create_excel():
# 创建工作簿
workbook = openpyxl.Workbook() ⭐
# 创建工作表
mysheet = workbook.create_sheet("mysheet1") ⭐
# 获取当前工作表(活跃工作表(当前编辑的工作表))
worksheet = workbook.active ⭐
# 写入数据
worksheet.cell(1, 1).value = "id"
worksheet.cell(1, 2).value = "name"
worksheet.cell(1, 3).value = "address"
# 保存数据
workbook.save("personal.xlsx")
3 修改单元格数据
def edit_excel(path):
# 获取工作簿
workbook = openpyxl.load_workbook(path)
# 获取工作表
worksheet = workbook["Sheet"]
# 修改某单元格数据
worksheet.cell(1, 1).value = "No" ⭐
# 保存数据
workbook.save(path)
4 添加单元格数据
def add_manydata(path):
# 获取工作簿
workbook = openpyxl.load_workbook(path)
# 获取sheet页
worksheet = workbook["mysheet1"]
# 准备数据
data = [1, 2, 3, 4, 5, 6]
# 添加数据
worksheet.append(data)
# 保存工作簿
workbook.save(path)