python中的时间格式
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
openpyxl处理excel数据
填充颜色和渐变色
#from openpyxl.styles importPatternFill
fill = PatternFill(fill_type = None,start_color='FFFFFF',end_color='000000')
ws.['B1'].fill = fill
实例
import pandas as pd
import datetime
import time
import openpyxl
import openpyxl.styles
from openpyxl.styles import PatternFill
def getpara(month):
if month > 4:
return 1
elif month > 7:
return 2
elif month > 9:
return 3
else:
return 4
def getpara1(month):
return 4 - getpara(month)
#先定义起始和结束日期当年对应的报告期数
def parseOneCol(item):
ret = []#定义一个列表
startTime = str(item[2])#item[2]列表索引,转换成str格式
d = datetime.datetime.strptime(startTime, '%Y%m%d')
endTime = str(item[3])
#datetime.datetime.strptime(字符串,时间格式)
tmp = d.year - 1998
if tmp < 0:
start = 4
else:
start = tmp + 5
#如果起始年比1998小则从1998这一列开始,如果比1998大则从起始年后一年开始
if tmp >= 0:
if item[tmp + 4] < getpara(d.month):
ret.append(tmp + 4)
#如果起始年>=1998,其对应的值小于理应的值,则在ret中插入该对象
d2 = datetime.datetime.strptime(endTime, '%Y%m%d.0')
end = d2.year - 1998 if d2.year < 2021 else 2021 -1998
if item[end+4] < getpara1(d2.month):
ret.append(end+4)
#如果在结束年的位置,其对应的值小于理应的值,则在ret中插入该对象
for i in range(start, end):
if item[i] < 4:
ret.append(i)
#如果在起始年和结束年之间的数值<4,则加在ret中插入该对象
return ret
path = r'C:\report_year(annip_asset_alloc).xlsx'
df = pd.read_excel(path, engine=None)#读取excel数据
df['maturity_date']=df['maturity_date'].fillna(value=20210907)
#填充结束年为空的为当前日期
data = df.values#返回的是不带标签的数据集
ret = []
for i, item in enumerate(data):#枚举data
t = parseOneCol(item)
if t:
ret.append((i + 2, t))
#循环parseOneCol函数
path1 = r'C:\test.xlsx'
wb = openpyxl.load_workbook(path1)
#load_workbook()函数接受文件名,返回一个 workbook 数据类型的值
sheet = wb["Sheet1"]
#获取sheet页
fille = PatternFill("solid", fgColor="FFBB02")#填充颜色
for (i, t) in ret:
for j in t:
sheet.cell(i, j + 1).fill = fille
#sheet.cell()读取单个数据表格信息
wb.save("test.xlsx")
wb.close()