本文主要研究的是用Python語言建立Map寫Excel表的相關代碼,具體如下。
前言:我們已經能夠很熟練的寫Excel表相關的腳本了。大致的操作就是,從數據庫中取數據,建立Excel模板,然后根據模板建立一個新的Excel表,把數據庫中的數據寫入。最后發(fā)送郵件。之前的一篇記錄博客,寫的很標準了。這里我們說點遇到的新問題。
我們之前寫類似腳本的時候,有個問題沒有考慮過,為什么要建立模板然后再寫入數據呢?誒…其實也不算是沒考慮過,只是懶沒有深究罷了。只求快點完成任務。。。
這里對這個問題進行思考闡述!
建立Excel模板,是涉及到歷史數據才要建立模板的,為什么呢?
如果,我們需要一份數據表,這個表中是本月的數據,每天跑一行出來。到了下個月,就需要新建下一個月的表。
這樣以后進行數據統(tǒng)計的時候,我們只需要拿到每個月的最后一天的那份數據表就可以了,因為最后一天的數據表包含了當月的所有數據。
對于這樣一個需求,腳本中的代碼在月份改變時,肯定要新建一個表,不再將原來的表作為模板來寫。
自然,下一個月的表肯定不能把上一個月的數據帶進去,所以肯定需要新寫表頭。
這里往深了思考,就涉及到了另外一個問題。
def createTemplateExcel(): '''創(chuàng)建Excel文件模板''' wb = xlwt.Workbook(encoding = "UTF-8", style_compression = True) sht0 = wb.add_sheet("線上", cell_overwrite_ok = True) sht0.col(0).width=4000 sht0.write(0, 0, '游戲名稱', style1) sht0.write(0, 1, '渠道', style1) sht0.write(0, 2, '成交量', style1) sht0.write(0, 3, '下單量', style1) sht0.write(0, 4, '失敗量', style1) sht1 = wb.add_sheet("線下", cell_overwrite_ok = True) sht1.col(0).width=4000 sht1.write(0, 0, '游戲名稱', style1) sht1.write(0, 1, '成交量', style1) sht1.write(0, 2, '下單量', style1) sht1.write(0, 3, '失敗量', style1) return wb 或者 wb.save(tempFileName)這個所謂的建立模板的方法做了什么事情呢?
只是建立了自定義名字的sheet,然后將表頭寫進去了而已。所以建立模板的方法本質上實際上就是寫表頭。
我們可以return wb,也可以wb.save(tempFileName)
即,我們可以把寫好的表頭直接return,接著下面的寫數據的方法用。
也可以,直接保存一個模板Excel表出來放在腳本后臺用。每次需要寫新表的時候就去調用生成的模板。
這里的問題還可以更加深。。。
其實又是個平衡問題。我們是每次調方法來寫表頭,消耗運行時間。還是直接調用已經寫好的模板文件呢?直接調用雖然快,但是模板文件會占用腳本后臺的空間。
新聞熱點
疑難解答