汇总python对excel的基本操作方法
一、查询功能
import openpyxl #引入excel的操作模块
wb = openpyxl.load_workbook('example.xlsx') #读取excel文件
#功能1:打印工作表名称
sheet_name = wb.sheetnames #下面的代码等价于 sheet_name
# = wb.get_sheet_names()
#注意get_sheet_names这个函数在新版python
#中已经不使用了
print(sheet_name)
#功能2:打印A2位置的内容
sheet = wb['高一一班'] #下面的代码等同于sheet = wb.get_sheet_by_name
# ('高一一班'),该代码已不使用
sheet_content_A2 = sheet['A2'].value #读取A2位置的内容
print(sheet_content_A2)
#功能3:打印A2位置的坐标
sheet_content = sheet['A2']
print(str(sheet_content.row) + str(sheet_content.column)) #打印该点坐标,注意横纵坐标的写法输出结果都是整型
print(sheet_content.coordinate) #打印该点坐标
#功能4:打印表格的总行数和总列数
sheet = wb['高一一班']
print(sheet.max_row)
print(sheet.max_column)
#功能5:将列数字转换成字母
from openpyxl.utils import get_column_letter
sheet_column_letter = get_column_letter(sheet_content.column) #打印该点的列字母,需要import函数
print(sheet_column_letter)
#功能6:打印某一行或列的坐标
print(sheet['A']) #获取整个A列的坐标
print(sheet[1]) #获取整个第1行的坐标
print(sheet[1:2]) #获取整个第1行到第2行的坐标
#功能7:打印某一行或列的所有值
for cell in sheet[1]:
print(cell.value)
for row in sheet[1:2]: #打印第1和第2行的所有值
for cell in row:
print(cell.value)
功能8:使用python读取excel的工作表名称
import openpyxl #引入excel的操作模块
wb = openpyxl.load_workbook('example.xlsx') #读取excel文件
#功能1:打印工作表名称
sheet_name = wb.sheetnames #下面的代码等价于 sheet_name
# = wb.get_sheet_names()
#注意get_sheet_names这个函数在新版python
#中已经不使用了
print(sheet_name)
样表:
输出结果:
['高一一班', '高一二班', '高一三班']
二、增加功能
# 功能1:在新表格中加入内容
ws = wb.active
ws['A1'] = 43 # 在A1中加入数字42
ws.append([1,2,3]) # 在下一行的三个单元格中加入1,2,3
# 功能2:加入当前时间
import datetime
ws['A3'] = datetime.datetime.now()
# 功能3:创建文件
wb.save(filename='example2.xlsx') # 用save语句最后才能生成excel文件
# 功能4:创建新工作表
wb = openpyxl.load_workbook('example2.xlsx')
wb.create_sheet(index=0,title='first sheet') # 如果是先录入数值再创建工作表,创建表之前的数据会被消除
wb.create_sheet(index=1,title='second sheet') # 创建第二张工作表
wb.save('example2.xlsx')
三、删除功能
# 功能1:删除工作表
ws = wb['second sheet']
wb.remove(ws)
wb.save('example2.xlsx') # 必须有save语句才会生效
四、其他功能
# 功能1:将CSV中数据导入EXCEL
import openpyxl
import pandas as pd
import matplotlib.pyplot as plt
# 在当前目录下建立一个新excel
wb = openpyxl.Workbook()
print(wb.sheetnames)
ws = wb.active
# 将Iris中的数据转到新建立的excel中
Iris = pd.read_csv('iris.data')
print(Iris[1:3]) # 仅打印Iris的1到3行
Iris.columns = ['SepalLengthCm','SepalWidthCm','PetalalLengthCm','PetalWidthCm','Species']
# 暴力修改列索引的办法,行索引修改办法类似
# 如果只是修改其中一个索引,简便方法是:
# Iris.rename(columns={'原索引名称':'新索引名称'})
print(Iris[1:5])
# 通过循环语句将dataframe的内容传入excel中
for i in range(1,149):
content1 = Iris.loc[i,'SepalLengthCm'] # content的坐标取的是dataframe的位置
content2 = Iris.loc[i,'SepalWidthCm'] # 这个写法比较傻,同样的代码写了5次,因为不是工作重点,后续再优化
content3 = Iris.loc[i,'PetalalLengthCm']
content4 = Iris.loc[i,'PetalWidthCm']
content5 = Iris.loc[i,'Species']
ws['A' + str(i)].value = content1 # 单元格的坐标取的是excel的位置,所以列的坐标是从'A'开始
ws['B' + str(i)].value = content2
ws['C' + str(i)].value = content3
ws['D' + str(i)].value = content4
ws['E' + str(i)].value = content5
i+=1
wb.save('irisdata.xlsx')