一:Excel文件处理介绍:
需要用到第三方库:openpyxl(最常用)、xlrd、xlwt、pandas...
安装第三方库:pip install openpyxl
二:openpyxl模块
openpyxl模块的三大重要组件:
1.工作簿:包含多个工作表
2.工作表:某个数据包含在某个工作表
3.单元格:就是Excel中的单元格
三:Excel的处理:
由于对excel的操作是持续性的,所以这里我们直接封装成方法
创建Excel:
import openpyxl #调用第三方模块
def createExcel():
#创建一个工作簿
wk=openpyxl.Workbook() #这里需要注意的是Workbook开头的W是大写,小写会报错
#获取当前工作表
sheet=wk.active
#写数据到单元格里
sheet.cell(1,1).value="username" #在cell中需要传入行,列,具体的值,这里是在第一行,第一列中写入username
sheet.cell(1, 2).value = "class" #同上
sheet.cell(1, 3).value = "like" #同上
wk.save("userinfo.xlsx") #这行代码的意思是保存wk工作簿,运用save方法,括号里是给工作簿命名
if __name__ == '__main__':
createExcel() #调用该函数实现生成user info.xlsx文件
读取Excel数据:
# 2.读取Excel文件:
def readExcel(filepath):
#获取工作簿
wk=openpyxl.load_workbook("userinfo.xlsx") #用load_workbook来获取工作簿,并输入文件姓名
#获取工作表:方法一
sheet1=wk.get_sheet_by_name("Sheet") #用get_sheet_by_name来获取工作表,括号里是工作表的名称sheet是工作表初始命名
# #获取工作表方法二:
# sheet1=wk["Sheet"] #注意!!!默认的文件名称首字母是大写!!!!找了好久
#获取单元格坐标
location=(sheet1.cell(1,1))
value=sheet1.cell(1,1).value #获取值
print(location,value)
#获取工作表行数及列数
rows=sheet1.max_row
cols=sheet1.max_column
print(f"行数:{rows},列数:{cols}")
if __name__ == '__main__':
# createExcel()
readExcel("臆想症.xlsx")
#在这里需要填写文件名,如果是在同一层级下,写相对路径即可,否则最好写绝对路径
读取文件中所有的数据:(由于改动了之前的代码,所以这个是全篇)
# 调用 openpyxl第三方库
import openpyxl
def createExcel():
# 创建一个工作簿,首先最好是封装成一个方法
wk=openpyxl.Workbook() #用wk变量去接收后面的值,这里Workbook的W是要大写的
#获取当前工作簿的工作表
sheet=wk.active
#写数据到单元格里
sheet.cell(1,1).value="班级"
sheet.cell(1,2).value="姓名"
sheet.cell(1,3).value="性别"
sheet.cell(1,4).value="爱好"
sheet.cell(1,5).value="座右铭"
sheet.cell(2,1).value="八年二班"
sheet.cell(2,2).value="帅到惊动联合国"
sheet.cell(2,3).value="男"
sheet.cell(2,4).value="学习"
sheet.cell(2,5).value="一天不学习,浑身难受,夜不能寐"
sheet.cell(3,1).value="高一一班"
sheet.cell(3,2).value="财神爷首席大弟子"
sheet.cell(3,3).value="男"
sheet.cell(3,4).value="无"
sheet.cell(3,5).value="我师傅就是最棒的"
wk.save("臆想症.xlsx")
def readExcel(filepath): #file path在这里是对应添加路径
#获取工作簿
wk=openpyxl.load_workbook("臆想症.xlsx") # 用losd_workbook方法获取工作簿
#获取工作表,方法1
# sheet1=wk.get_sheet_by_name("sheet")#括号中添加工作表名称,一般是默认sheet
#方法二
sheet1=wk["Sheet"] #注意!!!默认的文件名称首字母是大写!!!!找了好久
#获取单元格数据
location=(sheet1.cell(1,1)) #获取单元格坐标
value=sheet1.cell(1,1).value #获取对应的值
print(location,value)
#获取工作表行数以及列数
rows=sheet1.max_row
cols=sheet1.max_column
print(f"行数{rows},列数{cols }")
datalist=[]
#读取文档中所有的数据 用循环来完成
#行数少的情况下用这个可以,但是不建议
# for row in range(1,rows+1): #row代表的是行数 range行数,这里range不包含最大行数,所以要加一
# #这里的循环用的是循环行的方法来完成,但是涉及到有很多行的情况下会比较繁琐,所以我们来简化一下代码
# value1=sheet1.cell(row,1).value #row是行数,这里代表的是第一行的值
# value2=sheet1.cell(row,2).value #代表第二行的值
# value3=sheet1.cell(row,3).value #代表第三行的值
# value4=sheet1.cell(row,4).value #代表第四行的值
# value5=sheet1.cell(row, 5).value # 代表第五行的值
#这方法二:
for row in range(1, rows + 1):
# 在这里我们去循环它的列数并取值
for col in range(1,cols+1):#cols代表的是列数 range行数,这里range不包含最大行数,所以要加一
value=sheet1.cell(row,col).value
datalist.append(value) #在此之前创建一个datalist的空列表,然后用append的方法添加value进去
return datalist #这里返回空列表
def printDataExcel(filepath):
data=readExcel(filepath)
print(data)
#由于我们要这个数据运用到其他模块中,所以我满五年可以用字典或列表等方法进行存储
if __name__ == '__main__':
# createExcel()
# readExcel("臆想症.xlsx") #在这里需要填写文件名,如果是在同一层级下,写相对路径即可,否则最好写绝对路径
printDataExcel("臆想症.xlsx")
编辑Excel文件:增加一个新的工作表
def editExcel(filepath): ##任务创建一个新的工作表
#首先先加载工作簿
wk=openpyxl.load_workbook("臆想症.xlsx")
#创建新的工作表
mysheet=wk.create_sheet("工作表") #用create_sheet方法进行添加新的sheet,并取名工作表
mysheet.cell(1,1).value="姓名"
mysheet.cell(1,2).value="班级"
wk.save(filepath) #保存
if __name__ == '__main__':
editExcel("臆想症.xlsx")
整理:在对Excel操作中一定要记得保存文件,也就是xx.save方法