在cmd 中安装第三方模块
#pip install openpyxl
#import openpyxl
#openpyxl.Workbook() #创建workbook
from openpyxl import Workbook
#wb = Workbook()
grab the active worksheet
#ws = wb.active
Data can be assigned directly to cells
#ws[‘A1’] = 42
Rows can also be appended
#ws.append([1, 2, 3])
Python types will automatically be converted
import datetime
#ws[‘A2’] = datetime.datetime.now()
Save the file
#wb.save(“sample.xlsx”)
from openpyxl import Workbook
wb=Workbook( ) #创建工作簿 自建 一个sheet 工作表
#创建工作表
ws=wb.active #获取当前排行老一的第一个工作表
wb.create_sheet(‘Mysheet1’) #默认名称为sheet1,递增
<Worksheet “Mysheet1”>
ws2=wb.create_sheet(‘Mysheet2’,0) #插在最前边
#修改工作表名
ws.title=‘title’
ws.sheet_properties.tabColor=‘1072BA’ #设置工作表按键颜色
查看工作表名
#查看工作薄中的所有工作表 list
wb.sheetnames #查看工作薄中的所有工作表 list
[‘Mysheet2’, ‘title’, ‘Mysheet1’]
for sheet_name in wb.sheetnames: #查看工作薄中的所有工作表 list,
print(sheet_name)
Mysheet2
title
Mysheet1
for sheet in wb: #查看工作薄中的所有工作表 list ,循环wb工作薄
print(sheet.title) #遍历出每个工作表对象,通过title属性获取工作表名
Mysheet2
title
Mysheet1
复制工作表
source=wb.active
targer
targer=wb.copy_worksheet(source) #复制工作表
targer.title
‘Mysheet2 Copy1’
wb.copy_worksheet??
注意:
1.有的属性是不可复制的,比如excel表格中的图片或图表是不可复制的 2.工作薄只在只读或只写模式下打开,也是不可复制工作表的
访问单元格数据
ws[“A1”]
<Cell ‘title’.A1>
ws[‘A1’]=‘name’ #单元格A1赋值为name
通过方法赋值
n
#ws.cell??
ws.cell(row=15,column=1,value=5) # A15 赋值为5
<Cell ‘title’.A15>
第1行输入1,第2行输入2…
语法:
i=0
r=0
for i in range(1,10):
for r in range(1,10):
ws.cell(row=i,column=r,value=i)
访问多个单元格
访问多个单元格
语法:
cell_range=ws[‘A1’:‘C2’] #访问 A1,B1,C1,A2,B2,C2
colC=ws[‘C’]
colC=ws[‘C’] #获取C列
col_range=ws[‘C:D’] #获取C,D两列
row9=ws[9] #访问第9行
row9=ws[9] #访问第9行
row9
#row_range=ws[5:9] #访问第5行 到 第9行
row_range=ws.iter_rows(min_row=1,max_row=2,max_col=3)
row_range=ws.iter_rows(min_row=1,max_row=2,max_col=3) #获取多行数据
#list(row_range)
for row in row_range: #先获取到1,2行对象,从1,2行对象中遍历单元格
for cell in row:
print(cell)
for row in row_range: #先获取到1,2行对象,从1,2行对象中遍历单元格
for cell in row:
print(cell)
ws.iter_cols(min_row=1,max_row=2,max_col=3)
col_range=ws.iter_cols(min_row=1,max_row=2,max_col=3) #获取多行数据
#list(row_range)
for col in col_range: #先获取到1,2行对象,从1,2行对象中遍历单元格
for cell in col:
print(cell)
<Cell ‘title’.A1>
<Cell ‘title’.A2>
<Cell ‘title’.B1>
<Cell ‘title’.B2>
<Cell ‘title’.C1>
<Cell ‘title’.C2>
注意:wb.iter_cols()在只读模式下不可用
文件所有行或列
如果需要遍历文件所有行或列
#访问顺序是一行一行访问
ws.rows #生成器
tuple(ws.rows) #访问顺序是一行一行访问
ws.columns#生成器
tuple(ws.columns) #访问顺序是一列一列访问
访问单元格的值
访问单元格的值
#ws.values #获取ws对象中的单元格值, 生成器
for row in ws.values:
for row in row_range:
print(row)
row
row_range=ws.iter_rows(min_row=1,max_row=2,max_col=3,values_only=True)
for row in row_range: #先获取到1,2行对象,从1,2行对象中遍历单元格
print(row)
(1, 1, 1)
(2, 1, 2)
赋值
单元格进行赋值
语法:
a1=ws[‘A1’]
a1.value
a1.value
a1.value=“hello”
a1.value
‘hello’
#加载 文件
2
from openpyxl import load_workbook
wb2=load_workbook(‘test4.xlsx’)