用python在excel中做批量计算(包括单元格为空值时的处理情况)

现有如下某城市的2000-2017年人口和GDP数据的excel文件,需要计算其中人均GDP这一列的指标结果。

虽然这个工作在excel中直接下拉公式即可完成,但如果有50个城市的该种数据,显然下拉公式也是很费功夫的。

因此,有必要讨论通过python在excel中做批量计算的情况。

但是,可以看到,人口和GDP数据都有空值,不是每年都有的。此时,应该考虑try-ecept语句来处理异常情况。代码如下:

import openpyxl as op
file="某市人口和GDP数据.xlsx"
wb=op.open(file,data_only=True) #打开excel文件,并仅读取数值
sheet_name=wb.get_sheet_names() #获取工作簿所有工作表,实际上只有一个
ws=wb[sheet_name[0]] #打开第一个工作表
rows=ws.max_row #获取工作表的最大行数
for i in range(rows-1):
    #采用try-except语句处理空值单元格
    try:
            a=ws.cell(2+i,3).value/ws.cell(2+i,2).value*10**4 #计算人均GDP,单位转换系数为10**4,即10000
            ws.cell(2+i,4,value=a)
    except TypeError:
            ws.cell(2+i,4,value="")

wb.save(file)

代码运行结果如下:

如果不做空值的异常处理,即代码如下:

import openpyxl as op
file="某市人口和GDP数据.xlsx"
wb=op.open(file,data_only=True) #打开excel文件,并仅读取数值
sheet_name=wb.get_sheet_names() #获取工作簿所有工作表,实际上只有一个
ws=wb[sheet_name[0]] #打开第一个工作表
rows=ws.max_row #获取工作表的最大行数
for i in range(rows-1):
            a=ws.cell(2+i,3).value/ws.cell(2+i,2).value*10**4 #计算人均GDP,单位转换系数为10**4,即10000
            ws.cell(2+i,4,value=a)

wb.save(file)

则会出现TypeError错误,即“unsupported operand type(s) for  /:'float' and 'NoneType'”,如下图:

本文对应的excel文件已上传。

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值