利用Python制作簡易的核酸檢測日歷_第1頁
利用Python制作簡易的核酸檢測日歷_第2頁
利用Python制作簡易的核酸檢測日歷_第3頁
利用Python制作簡易的核酸檢測日歷_第4頁
利用Python制作簡易的核酸檢測日歷_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第利用Python制作簡易的核酸檢測日歷目錄錄入數(shù)據(jù)制作日歷1.使用openpyxl創(chuàng)建表格2.定義表格初始化和單元格設(shè)置的函數(shù)3.實現(xiàn)日歷制作一年的日歷我的坐標(biāo)是深圳,2025年以來,大部分時候要求24小時,少部分時候要求48小時,更少的時候要求72小時,沒有更長的情況。

本文根據(jù)我的核酸檢測記錄,制作成日歷,將核酸檢測記錄可視化到日歷中。

錄入數(shù)據(jù)

核酸檢測記錄能查到的最早時間范圍是一個月,以前的檢測記錄沒有提前保存,所以先用8月份的數(shù)據(jù)制作日歷。

查詢8月份的檢測記錄,錄入到代碼中。

#coding=utf-8

fromdatetimeimportdatetime

#核酸檢測數(shù)據(jù),1表示當(dāng)天做了核酸,0表示當(dāng)天未做核酸

my_nucleic={

'date':[datetime.strftime(datetime(2025,8,i+1),'%Y-%m-%d')foriinrange(31)],

'nucleic':[1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]

}

如果當(dāng)天做了核酸,用1表示,如果當(dāng)天未做核酸,用0表示。

8月的日期使用Python標(biāo)準(zhǔn)庫datetime生成。

制作日歷

本文使用Python庫openpyxl在excel表格中生成日歷。

1.使用openpyxl創(chuàng)建表格

importopenpyxl

#創(chuàng)建一個workbook對象,而且會在workbook中至少創(chuàng)建一個表worksheet

wb=openpyxl.Workbook()

#獲取當(dāng)前活躍的worksheet,默認(rèn)就是第一個worksheet

ws=wb.active

openpyxl是Python中用于讀寫excel文件的庫,pipinstallopenpyxl安裝即可使用。

2.定義表格初始化和單元格設(shè)置的函數(shù)

fromopenpyxl.stylesimportPatternFill,Font,Alignment,Border,Side

definit_sheet(ws):

forrinrange(100):

forcinrange(100):

ws.cell(row=r+1,column=c+1).fill=PatternFill('solid',fgColor='000000')

defset_cell_style(ws,r,c,color):

ws.cell(row=r,column=c).fill=PatternFill('solid',fgColor=color)

ws.cell(row=r,column=c).font=Font(name="微軟雅黑",size=14,bold=True)

ws.cell(row=r,column=c).alignment=Alignment(horizontal='right',vertical='center')

side=Side(,color="004B3C")

ws.cell(row=r,column=c).border=Border(top=side,bottom=side,left=side,right=side)

定義一個將表格顏色填充成白色的函數(shù),對表格初始化處理,將背景設(shè)置成純白,日歷看起來更美觀。

定義一個用于處理單元格格式的函數(shù),后面直接調(diào)用函數(shù)給單元格設(shè)置格式,方便重復(fù)使用。

3.實現(xiàn)日歷

importcalendar

#將表格填充成白色

init_sheet(ws)

#設(shè)置年月單元格的邊框

side=Side(,color="004B3C")

forcolinrange(7):

ws.cell(row=1,column=col+1).border=Border(top=side,bottom=side,left=side,right=side)

#合并年月單元格

ws.merge_cells(start_row=1,start_column=1,end_row=1,end_column=7)

#寫入內(nèi)容和設(shè)置格式

ws.cell(row=1,column=1).value='2025年8月'

set_cell_style(ws,r=1,c=1,color='418CFA')

#寫入星期一至星期日,并設(shè)置格式

title_data=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']

forcolinrange(7):

ws.cell(row=2,column=col+1).value=title_data[col]

set_cell_style(ws,r=2,c=col+1,color='418CFA')

#獲取一個月的天數(shù)和第一天是星期幾

monthday=calendar.monthrange(2025,8)

#設(shè)置日歷的日期

col,row=monthday[0],3

foriinrange(len(my_nucleic['date'])):

ifcol7:

ws.cell(row=row,column=col+1).value=i+1

col+=1

else:

col=0

row+=1

ws.cell(row=row,column=col+1).value=i+1

col+=1

#設(shè)置單元格格式

set_cell_style(ws,r=row,c=col,color='000000')

#根據(jù)核酸結(jié)果填充顏色

ifmy_nucleic['nucleic'][i]==1:

ws.cell(row=row,column=col).fill=PatternFill('solid',fgColor='009B3C')

#設(shè)置行高

foriinrange(1,row+1):

ws.row_dimensions[i].height=30

#保存表格

wb.save(filename='show_august_nucleic.xlsx')

wb.close()

日歷效果:

可以看到,8月份我只有4天沒有做核酸,大部分時間都是保持24小時。

代碼實現(xiàn)介紹:

先合并首行的前7列單元格,寫入年月,然后在第二行從左到右寫入星期一到星期日,并設(shè)置格式。使用Python的日歷庫calendar返回當(dāng)前月第一天是星期幾,然后確定日歷的1號的起始位置。從1號開始,依次在excel中寫入日期,當(dāng)列到達(dá)星期日時,換行并回到星期一的列。根據(jù)當(dāng)天是否做了核酸,給單元格填充背景顏色。本文中如果當(dāng)天做了核酸,則日期的背景設(shè)置為綠色(24小時核酸碼的顏色),如果未做核酸,則日期的背景設(shè)置為白色。最后將結(jié)果保存到excel文件中,打開excel文件即可看到制作的日歷。

制作一年的日歷

制作了一個月的日歷后,繼續(xù)擴展做一年的日歷,先看一下效果:

實現(xiàn)方式介紹:

數(shù)據(jù)補充,由于只能查到一個月的核酸記錄,所以本文除2025年8月外,其他月份的數(shù)據(jù)用隨機數(shù)生成。對制作一個月日歷的代碼進(jìn)行封裝,傳入年和月,就可以生成任意一個月的日歷。在excel文件中,自己設(shè)計一排展示幾個月,本文一排展示3個月。并計算每個月日歷的起始單元格位置。最后傳入年份,依次將一年12個月的日歷制作出來,展示在一個頁面上。只要有數(shù)據(jù),可以對任意一年的日歷進(jìn)行可視化。(代碼較長,可在文末獲取完整代碼)

按年的另一種展示方式:

frompyechartsimportoptionsasopts

frompyecharts.chartsimportCalendar

importpandasaspd

nucleic_df=pd.DataFrame()

foriinrange(12):

month_nucleic=made_data(2025,i+1)

month_df=pd.DataFrame(month_nucleic)

nucleic_df=pd.concat([nucleic_df,month_df])

data=[[row_data['date'],row_data['nucleic']]forrow_index,row_datainnucleic_df.iterrows()]

cal=Calendar(init_opts=opts.InitOpts(width='900px',height='500px'))

cal.add(

'',data,calendar_opts=opts.CalendarOpts(range_="2025",

daylabel_opts=opts.CalendarDayLabelOpts(first_day=1,name_map='cn'))

).set_series_opts(

label_opts=opts.LabelOpts(font_size=12)

).set_global_opts(

title_opts=opts.TitleOpts(title='核酸檢測日歷',pos_left='450',pos_top='0',

title_textstyle_opts=opts.TextStyleOpts(color='black',font_size=16)),

visualmap_opts=opts.VisualMapOpts(

max_=1,min_=0,orient="horizontal",is_piecewise=False,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論