【Python+Excel 02】提取excel表中的某一行,写入另一张表sheet

一、应用背景

昨天完成了CSV文件的读取并将其中的几列写入了EXCEL,今天就来选取一下其中满足条件的行数据,并写入此表中的另一个sheet中。

二、参考文献

《python 读取Excel文件(包括后缀为.xls与.xlsx)》
《用Python对Excel获取sheet、增加sheet、写入单元格数据》
《python合并已经存在的sheet数据到新sheet的方法》
《python中用xlrd和xlwt写入excel,在sheet中先写入的数据被后写入的数据覆盖的问题》

三、代码

代码如下:

from openpyxl import load_workbook
import xlrd
import xlwt
from xlutils.copy import copy

file=r"D:\DATA\excel\DAN.xls"  #打开
# 打开文件
workbook=xlrd.open_workbook(file)
cwb=copy(workbook) #复制一下
# 读取sheet页
sheet1=workbook.sheet_by_name('sheet1') #原始数据页面
sheet2=cwb.get_sheet('sheet2') #存放提取的数据,sheet2是原来就有的
# 获取表的行列数
rows=sheet1.nrows
cols=sheet1.ncols
# 获取表中数值   
RowIndex=0 #设置写入提取的数据的EXCEL行数
names=['year','month','day','hour','minute','NETRAD','H_F_MDS','LE_F_MDS'] #需要选取的列名

for nameindex in range(0,len(names)): #选取7列
    sheet2.write(0, nameindex, names[nameindex]) # 写入列名称

for i in range(1,rows):    #遍历行
    row_data = sheet1.row_values(i) 
    if int(row_data[3])==11 :
        if int(row_data[4])==0:  #若hour=11且minute=0 即11:00
            RowIndex=RowIndex+1
            for j in range(0,cols): #遍历列
                sheet2.write(RowIndex, j, float(row_data[j])) #将sheet1中满足条件的行赋值给sheet2

cwb.save(file) #保存EXCEL
print("------OK")

四、结果

原数据为左图,提取后为右图
在这里插入图片描述

五、注意事项

1、原来没有sheet2的情况

上面的程序所用到的表格里是带有sheet2的,若没有sheet2的话,就还得再创建一个,把如下语句:

sheet2=cwb.get_sheet('sheet2') #激活sheet2

替换为:

sheet2 = cwb.add_sheet('sheet2') #创建sheet2

2、关于copy

cwb=copy(workbook) #复制一下

由于能力有限,我还没有找到直接建立同一个工作簿下的工作表并写入数据的方法,于是就先复制一下,在最后的时候,把复制的工作簿覆盖掉原来的工作簿

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值