python对execl的操作

1 execl的创建

import openpyxl
a=[['张三',23],['李四',25]]
wb = openpyxl.Workbook()
ws = wb.active
ws.title='练习'
ws['A1']='姓名'
ws['B1']='年龄'
for i in a:
    ws.append(i)
wb.save('e.xlsx')

这样看的话,会顺序的输入到定制的表头中

还有就是,如果是这种 a=[[‘张三’,23],[‘李四’,25]]的形式,会自动的进行填充,emmm上图
在这里插入图片描述

a=[['张三',23],['李四',25]]
for i in a:
    ws.append(i)

最后就是 openpyxl会把列表中的元素逐个添加进去,也就是说
a=[[‘张三’,23],[‘李四’,25]]
在这里插入图片描述

b=[‘张三’,23,‘李四’,25]

在这里插入图片描述


2 execl文件的读取
获取工作表的方法:
Wb.Get_sheet_names() 这种会经常报错。。。
Wb.Sheetnames

获取工作表中的sheet:
print(wb[‘软件名称 阳光惠生活’]) #这是工作表对象的形式
Wb.get_sheet_by_name(‘sheet’) #sheet确实存在 也是工作表的形式存在

但是这个目前版本好像已经过时,更多的是: 这是获取其中的具体内容,不是工作表形式

For i in rang(len(Wb.Sheetnames)):
Print(Wb.Sheetnames[i])

创建工作表:

Wb.create_sheet(title=’sas’,index=0)

new_sheet = wb.create_sheet('汇总')

提示一下:index如果等于0的话,会在最前面插入新建的表,不写的话,则是在最后插入

删除工作表:
提示必须传入工作表对象 这个样子<Worksheet “汇总”>
第一:wb.remove(wb[‘汇总’])
第二:del wb[‘汇总’]

定位单元格

wb = openpyxl.load_workbook('腾讯应用宝仿冒APP汇总.xlsx')
ws=wb['软件名称 云缴费']
c=ws['A2']
print(c.row)   #第几行
print(c.column)   #第几列
print(c.coordinate)  #具体位置

在这里插入图片描述

Print(ws[‘A2’].value)   #获得对应单元格的值  

D=c.offset(2,0)   #D的位置是距离C的两行0列的位置   向下偏移 向右偏移
D.Value

访问多个单元格,获取单元格内的值
for each_val in ws[‘A2’:‘C5’]: #注意这里是元组的形式 ws[‘A2’:‘C5’] 没法直接用.values

for each in each_val:
print(each.value,end=’ ‘)
print(’\n’)

最后说一遍,.value没法用在元组,只能是 <Cell ‘软件名称 云缴费’.A1>这种,也就是单个点的情况下可以使用,然后就不断地循环,直到可以用到单个点
这也是获取多个单元格内容

for i in ws.rows:
    #print(i)  #元组  (<Cell '软件名称 云缴费'.A1>)
    #print(i[0])  # Cell <Cell '软件名称 云缴费'.A1>
    for h in i:
        print(h.value,end=' ')
    print('\n')
for each_row in ws.iter_rows(min_row=2,min_col=1,max_row=4,max_col=3):
	Print(each_row[0].value)

这个是获得哪哪哪的元素,要获得具体的值,还是要得到最小的点位数

拷贝工作表

wb = openpyxl.load_workbook('腾讯应用宝仿冒APP汇总.xlsx')
ws=wb['软件名称 云缴费']
new=wb.copy_worksheet(ws)  #ws是其中的一个工作表
new.title='第二个'
wb.save('腾讯应用宝仿冒APP汇总.xlsx')

3 个性化工作表标签栏
行高 列宽设置

wb = openpyxl.Workbook()
ws1 = wb.create_sheet('小甲鱼')
ws2 = wb.create_sheet('不二')
ws1.sheet_properties.tabColor = 'FF0000'   #红色
ws2.sheet_properties.tabColor = '00FF00'   #emmm颜色

row_dimensions[2]  修改第二行高度
Ws2.row_dimensions[2].height=100

column_dimensions[‘C’].width=50  修改C列宽度

融合单元格
ws1.merge_cells("A1:C3")
Ws1[‘A1’]=’love’

拆分单元格(拆分的范围与合并的范围一致)
ws1.unmerge_cells(‘A1:C3’)

冻结单元格(更好的查看数据)
要从要开始冻结的地方算起,也就是数据的第一位开始,看图
在这里插入图片描述
这里的话,就是从阳光生活冻结,也就是A2

wb = openpyxl.load_workbook('腾讯应用宝仿冒APP汇总.xlsx')
ws = wb.active
ws = wb['新的']
ws.freeze_panes = 'A2'
wb.save('腾讯应用宝仿冒APP汇总.xlsx')

解冻的话,就是freeze_panes=None

设置单元格字体

import openpyxl
from openpyxl.styles import Font

wb = openpyxl.load_workbook('腾讯应用宝仿冒APP汇总.xlsx')

new = wb.create_sheet('font')
new.column_dimensions['A'].width=50
new.row_dimensions[1].height=100
new['A1']='字体'
new['A1'].font=Font(bold=True,color='00FF00')
new['A2']='正常'
wb.save('腾讯应用宝仿冒APP汇总.xlsx')

4 数字格式问题
通过自定义格式来确定使用的方式

wb = openpyxl.Workbook()
ws = wb.active
ws.title = 'test'
ws['A1']=88.8
ws['A1'].number_format = '#,###.00育碧'

ws['A2'] = datetime.datetime.today()
ws['A2'].number_format = 'yyyy-mm-dd'

ws.column_dimensions['A'].width = 30
wb.save('qwe.xlsx')

5 设置字体的格式

Ws.number_format =[=1];[=0]女”
Ws[‘A5’] = 0
通过设置 1 0 来代替男女
5execl函数公式
wb = openpyxl.load_workbook('练习.xlsx')
ws = wb['Sheet1']

center_alignment = Alignment(horizontal="center")

for row in ws.iter_rows(min_col=2,min_row=2,max_col=5,max_row=5):
    ws[row[3].coordinate] = "=SUM(%s:%s)" % (row[0].coordinate,row[2].coordinate)

ws['F1']= '评分'

for row in ws.iter_rows(min_row=2,min_col=2,max_col=6,max_row=5):
    ws[row[4].coordinate] = '=IF(%s>250,"A","B")' % (row[3].coordinate)
    ws[row[4].coordinate].alignment = center_alignment   #使其居中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值