python excel xlwings_python excel神器xlwings
(–本文是個人學(xué)習(xí)和使用過程中的總結(jié),如有錯誤歡迎指正 )
最近工作需要整理將近60位同事的周報合并到一個excel中,每周都會占用的大量的時間。希望把這個工作自動化,網(wǎng)上看了下基本都是用vba編程實現(xiàn)這一功能。由于沒有使用過vba,希望使用自己會的東西去實現(xiàn)。
我們的周報模板大致是這個樣子的:
搜了下python操作excel的包,看到最多的是xlrd和xlwt。我的操作其實很簡單就是拷貝每一個excel中的內(nèi)容并粘貼到一個匯總的excel,但這兩個包好像并不符合我的要求。
偶然間看到xlwings這個python包,使用這個包基本可以實現(xiàn)你在excel中的操作,如選中B5 到J20 這些單元格中的數(shù)據(jù)。這正是我想要的,寫了個簡單的腳本實現(xiàn)周報的整理,在這里記錄下。
使用中參考了xlwings官方文檔
我主要使用了WorkBook、Sheet、Range這三個。
import xlwings as xw
#app_visible=False 不打開excel窗口
wb = xw.Workbook(path), app_visible=False)
detail_sheet = xw.Sheet(unicode("任務(wù)詳細(xì)信息", "utf-8"))
#獲取有數(shù)據(jù)的最大行數(shù),由于我們單個excel數(shù)據(jù)不會超過幾十行,我使用的是B4:I40
last_row_index = xw.Range(detail_sheet, "B4").table.last_cell.row
#確定我們選取的數(shù)據(jù)范圍,如: B4:I20
rg = "B4:I" + str(last_row_index)
#獲取劃定范圍單元格中的數(shù)據(jù)
work_detail = xw.Range(detail_sheet, rg).value
#關(guān)閉打開的excel
wb.close()
接下來就是將work_detail 獲取到的數(shù)據(jù)拷貝到我們匯總的excel中,代碼幾乎一致
target_excel_path = u"F:\經(jīng)分應(yīng)用產(chǎn)品線小組周報模板.xlsx"
wb_target = xw.Workbook(target_excel_path, app_visible=False)
cr_sheet = xw.Sheet(u"任務(wù)詳細(xì)信息")
#清空內(nèi)容,單不清空格式
xw.Range(cr_sheet, "B4:I200").clear_contents()
xw.Range(cr_sheet, "B4").table.value = work_detail
wb_target.save(u"F:\經(jīng)分應(yīng)用產(chǎn)品線小組周報.xlsx")
wb_target.close()
(PS 后面希望加入自動添加數(shù)據(jù)透視圖的功能,暫時還沒找到這方面的接口)
好了,以后只需要run一下python腳本,自動整理并且發(fā)送郵件給負(fù)責(zé)人。
搞定 。。。。。。
總結(jié)
以上是生活随笔為你收集整理的python excel xlwings_python excel神器xlwings的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无法使用前导 .. 在顶级目录上退出
- 下一篇: matlab语言转化为python语言_