《ython操作excel》word版

《ython操作excel》word版

ID:22690187

大小:51.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-10-30

《ython操作excel》word版_第1頁(yè)
《ython操作excel》word版_第2頁(yè)
《ython操作excel》word版_第3頁(yè)
《ython操作excel》word版_第4頁(yè)
《ython操作excel》word版_第5頁(yè)
資源描述:

《《ython操作excel》word版》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、Youarehere:Home?計(jì)算機(jī)?編程?Python操作ExcelPython操作Excel2012-09-01老婆單位有時(shí)候有一些很大的Excel統(tǒng)計(jì)報(bào)表需要處理,其中最?lèi)盒牡氖强绫淼腏OIN查詢(xún)。他們通常采取的做法是,把多個(gè)Excel工作簿合成一個(gè)工作簿的多個(gè)表格,然后再跑函數(shù)(VLOOKUP之類(lèi))去查。因?yàn)橛玫暮瘮?shù)效率很低,在CPU打滿(mǎn)的情況下還要跑幾個(gè)小時(shí)。然后我就看不過(guò)去了,我也不懂Excel,不知道如何優(yōu)化,但我想用Python+SQLite總歸是能夠?qū)崿F(xiàn)的。于是就嘗試了一把,效果還不錯(cuò),一分鐘以?xún)?nèi)完成統(tǒng)計(jì)很輕松,其中大部分時(shí)間主要花

2、在讀Excel內(nèi)容上。1.Python操作Excel的函數(shù)庫(kù)我主要嘗試了3種讀寫(xiě)Excel的方法:1>xlrd,xlwt,xlutils:這三個(gè)庫(kù)的好處是不需要其它支持,在任何操作系統(tǒng)上都可以使用。xlrd可以讀取.xls,.xlsx文件,非常好用;但因?yàn)閤lwt不能直接修改Excel文檔,必須得復(fù)制一份然后另存為其它文件,而且據(jù)說(shuō)寫(xiě)復(fù)雜格式的Excel文件會(huì)出現(xiàn)問(wèn)題,所以我沒(méi)有選它來(lái)寫(xiě)Excel文件。2>openpyxl:這個(gè)庫(kù)也是不需要其它支持的,而且據(jù)說(shuō)對(duì)Office2007格式支持得更好。遺憾地是,我經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)它加載Excel文件的效率比x

3、lrd慢3倍以上,內(nèi)存使用在10倍以上,于是就放棄了。3>win32com:PythonWin32擴(kuò)展,這個(gè)庫(kù)需要運(yùn)行環(huán)境為Windows+Office對(duì)應(yīng)版本。由于PythonWin32擴(kuò)展只是把COM接口包裝了一下,可以視為與VBA完全相同,不會(huì)有讀寫(xiě)格式上的問(wèn)題。嘗試了一下用win32com讀取Excel文件,效率還是比xlrd慢一些。由于讀取效率上x(chóng)lrd>win32com>openpyxl,所以我自然選擇了xlrd用來(lái)讀取統(tǒng)計(jì)報(bào)表;而最終輸出的報(bào)表格式較復(fù)雜,所以選擇了win32com直接操作Excel文件。2.Python里的關(guān)系型數(shù)據(jù)庫(kù)S

4、QLite是一個(gè)非常輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù),很多語(yǔ)言和平臺(tái)都內(nèi)置SQLite支持,也是iOS和Android上的默認(rèn)數(shù)據(jù)庫(kù)。Python的標(biāo)準(zhǔn)庫(kù)里也包含了sqlite3庫(kù),用起來(lái)非常方便。3.用xlrd讀取Excel并插入數(shù)據(jù)庫(kù)樣例如果數(shù)據(jù)量不大,直接用Python內(nèi)部數(shù)據(jù)結(jié)構(gòu)如dict,list就夠了。但如果讀取的幾張表數(shù)據(jù)量都較大,增加個(gè)將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的預(yù)處理過(guò)程就有很大好處。一是避免每次調(diào)試都要進(jìn)行耗時(shí)較長(zhǎng)的Excel文件載入過(guò)程;二是能充分利用數(shù)據(jù)庫(kù)的索引和SQL語(yǔ)句強(qiáng)大功能進(jìn)行快速數(shù)據(jù)分析。#!/usr/bin/python#-*-codin

5、g:gbk-*-importxlrdimportsqlite3#打開(kāi)數(shù)據(jù)庫(kù)文件device_city_db=sqlite3.connect('device_city.db')cursor=device_city_db.cursor()#建表cursor.execute('DROPTABLEIFEXISTSdevice_city')cursor.execute('CREATETABLEdevice_city(device_idchar(16)PRIMARYKEY,cityvarchar(16))')?#打開(kāi)device相關(guān)輸入Excel文件device_

6、workbook=xlrd.open_workbook('輸入.xlsx')device_sheet=device_workbook.sheet_by_name('設(shè)備表')#逐行讀取device-城市映射文件,并將指定的列插入數(shù)據(jù)庫(kù)forrowinrange(1,device_sheet.nrows):??device_id=device_sheet.cell(row,6).value??iflen(device_id)>16:????device_id=device_id[0:16]??iflen(device_id)==0:????continu

7、e??city=device_sheet.cell(row,10).value??#避免插入重復(fù)記錄??cursor.execute('SELECT*FROMdevice_cityWHEREdevice_id=?',(device_id,))??res=cursor.fetchone()??ifres==None:????cursor.execute('INSERTINTOdevice_city(device_id,city)VALUES(?,?)',???????????(device_id,city))??else:????ifres[1]!=ci

8、ty:??????print'%s,%s,%s,%s'%(device_id,city,res

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。