Openpyxl库可以用来对excel文档进行一系列操作
一、工作薄操作
1.创建工作簿(路径,名称,当前路径保存,其他路径另存)
先将Workbook()类实例化,然后保存
import openpyxl
filespace =r"C:\\Users\\zhangxijiangyayaya\\Desktop\\issue list.xlsx"
#新建工作簿
workbook = openpyxl.Workbook()
#调用了Workbook类(首字母要大写),此处根据类创建实例,即实例化。
workbook.save(filespace)
#一定要有保存,才会保存到硬盘,保存时用预先定义好的地址和名称,很方便。如果说需要另存一个文件,只需要写另一个地址重复调用这个save属性即可
2.打开工作簿(打开哪个地址的哪个文件哪个sheet)
openpyxl.load_workbook()
workbook = openpyxl.load_workbook(filespace)
#打开工作表sheet,用Workbook类的active属性可以默认的打开第一个sheet
sheet = workbook.active
#或者用Workbook类的“工作簿["工作表名"]”方法通过切片方式打开特定的工作表sheet= workbook["Sheet1"]
二、工作表操作
1.创建工作表
create_sheet()
#此处默认是把新工作表加入到最后面,如果想要加到最前面可以定义index参数为0,即workbook.create_sheet("new sheet",0)
workbook.create_sheet("new sheet")
workbook.save(filespace)
#记住操作的最后一定要保存文件
2.删除工作表
remove()
workbook.create_sheet("new sheet",0)
workbook.remove("new sheet")
#这段代码会报错,因为remove方法的参数必须是对象,下面段因为传入了对象参数,就不会报错
newsheet = workbook.create_sheet("new sheet",0)
workbook.save(filespace)
workbook.remove(newsheet)
workbook.save(filespace)
3.复制工作表
copy_worksheet()
newsheet = workbook.create_sheet("new sheet",0)
workbook.save(filespace)
newsheetcopy = workbook.copy_worksheet(newsheet)
workbook.save(filespace)
#也是传入对象参数
4.工作表重命名
title属性
newsheet.title ="新建测试"
5.遍历所有工作表
worksheets
allsheetlists = workbook.worksheets
print(allsheetlists)
#得到的是一个列表(都是sheet对象)
三、单元格操作
1.获取一个单元格的值
工作表["单元格序号"]
工作表.cell(row ,column)
单元格对象.value得到单元格的值
import openpyxl
filespace =r"C:\\Users\\zhangxijiangyayaya\\Desktop\\issue list.xlsx"
workbook = openpyxl.load_workbook(filespace)
sheet = workbook.active
cellA1 = sheet["A1"]#得到A1单元格对象
cellA2 = sheet.cell(row=2,column=1)#得到A2单元格对象
print(cellA1.value)#单元格的值:单元格对象.value
print(cellA2.value)
2.获取一个特定区域单元格的值
工作表对象["行列索引(同excel的框选)"]
cellA1C10 = sheet["A1:C10"]
#如果是A:C代表A列到C列,如果是1:10代表1行到10行
print(type(cellA1C10))#通过打印属性的值得知cellA1C10是一个元组
print(cellA1C10)#打印此元组发现,每一行为一组
for rows in cellA1C10:
for columns in rows:
print(columns.value)#逐行逐列打印单元格内的值
print(cellA1C10[0][0].value)#索引特定单元格的值
设定索引范围
#这是按行索引,也可以按列索引,只要修改为sheet.iter_cols
effectiverange = sheet.iter_rows(min_row=0,max_row=10,min_col=0,max_col=3)
for rows in effectiverange:
for columns in rows:
print(columns.value)#逐行逐列打印单元格内的值
2.获取每一行,每一列
工作表对象.rows:这是个生成器,可以生成每一行的对象,每一行又由一个tuple包裹。
工作表对象.columns:和行类似
工作表对象.values :也是生成器,是所有工作表中所有的数据值
另外对于生成器,多说一句,生成器仅仅保存了一套生成数值的算法,并且没有让这个算法现在就开始执行,而是我什么时候调它,它什么时候开始计算一个新的值,并给你返回
参考https://www.cnblogs.com/liangmingshen/p/9706181.html
print(sheet.values)
print(sheet.columns)
print(sheet.rows)
#用sheet.values生成器,遍历所有的值
for rows in sheet.values:
for column in rows:
print(column)
#用sheet.rows生成器,遍历所有的值
for rows in sheet.rows:
for column in rows:
print(column.value)
#用list方法,将生成器?和元组转换成list,从而方便索引
alldata= list(sheet.values)
print(alldata)
print(alldata[0])#第一行
print(alldata[0:2])#第一行到第二行
print(alldata[0][0])#第一行第一列
3.列字母和数字之间的转换
#根据列的数字返回字母
print(get_column_letter(2)) # B
#根据字母返回列的数字
print(column_index_from_string('D')) # 4
网友评论