昨天完成了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")
上面的程序所用到的表格里是带有sheet2的,若没有sheet2的话,就还得再创建一个,把如下语句:
sheet2=cwb.get_sheet('sheet2') #激活sheet2
替换为:
sheet2 = cwb.add_sheet('sheet2') #创建sheet2
cwb=copy(workbook) #复制一下
由于能力有限,我还没有找到直接建立同一个工作簿下的工作表并写入数据的方法,于是就先复制一下,在最后的时候,把复制的工作簿覆盖掉原来的工作簿