Python對(duì)Excel操作教程_第1頁(yè)
Python對(duì)Excel操作教程_第2頁(yè)
Python對(duì)Excel操作教程_第3頁(yè)
Python對(duì)Excel操作教程_第4頁(yè)
Python對(duì)Excel操作教程_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Python對(duì)Excel操作詳解文檔摘要:本文檔主要介紹如何通過python對(duì)office excel進(jìn)行讀寫操作,使用了xlrd、xlwt和xlutils模塊。另外還演示了如何通過Tcl tcom包對(duì)excel操作。關(guān)鍵字:Python、Excel、xlrd、xlwt、xlutils、TCl、tcom1 Python簡(jiǎn)介Python是一種面向?qū)ο?、直譯式電腦編程語(yǔ)言,具有近二十年的發(fā)展歷史,成熟且穩(wěn)定。它包含了一組完善而且容易理解的標(biāo)準(zhǔn)庫(kù),能夠輕松完成很多常見的任務(wù)。它的語(yǔ)法簡(jiǎn)捷和清晰,盡量使用無異義的英語(yǔ)單詞,與其它大多數(shù)程序設(shè)計(jì)語(yǔ)言使用大括號(hào)不一樣,它使用縮進(jìn)來定義語(yǔ)句塊。與Scheme

2、、Ruby、Perl、Tcl等動(dòng)態(tài)語(yǔ)言一樣,Python具備垃圾回收功能,能夠自動(dòng)管理存儲(chǔ)器使用。它經(jīng)常被當(dāng)作腳本語(yǔ)言用于處理系統(tǒng)管理任務(wù)和網(wǎng)絡(luò)程序編寫,然而它也非常適合完成各種高級(jí)任務(wù)。Python虛擬機(jī)本身幾乎可以在所有的作業(yè)系統(tǒng)中運(yùn)行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉(zhuǎn)換成可以脫離Python解釋器運(yùn)行的程序。2 Python安裝Python目前的版本已經(jīng)更新到3.4.0,本文使用的版本為2.7.5,所有的版本都可以在python官網(wǎng)/下載,至于2.x和3.x版本的具體區(qū)別也可以在官網(wǎng)查看

3、。從官網(wǎng)下載了python 2.7.5安裝文件python-2.7.5.msi后,直接雙擊就可以安裝python了,可以選擇安裝路徑,我改為C:Python2.7.5了,然后一路next就完成安裝了,安裝完成后在C盤下就多了一個(gè)文件夾Python2.7.5。Python也是一種實(shí)時(shí)交互語(yǔ)言,可以通過自帶的IDLE編寫python語(yǔ)句并反饋回顯信息,可以通過圖1方式調(diào)出python IDLE。圖1也可以在cmd下輸入python,但默認(rèn)情況下python并沒有添加到windows環(huán)境變量中,導(dǎo)致在cmd下輸入python的時(shí)候出現(xiàn)提示“'python' 不是內(nèi)部或外部命令,也不是

4、可運(yùn)行的程序或批處理文件。”,windows下可執(zhí)行文件在運(yùn)行時(shí)首先在當(dāng)前目錄下搜索,因?yàn)檫M(jìn)入cmd下默認(rèn)路徑一般為C:Documents and SettingsAdministrator>,而在這個(gè)路徑下是找不到python的,所以提示出錯(cuò),可以進(jìn)入到python安裝目錄下,然后執(zhí)行python就可以進(jìn)入交互命令行模式下。如果懶的每次都進(jìn)入python安裝,此時(shí)需要將python安裝路徑添加到系統(tǒng)變量中,然后windows在執(zhí)行命令的時(shí)候會(huì)去環(huán)境變量中查找路徑,具體配置如圖2所示,在Path中添加python的安裝路徑“C:Python2.7.5;”,主要路徑后面要加”;”分號(hào)表面這

5、是一個(gè)路徑的結(jié)束,此時(shí)無論在哪個(gè)路徑下都可以執(zhí)行python調(diào)出交互命令行。圖23 Python語(yǔ)法入門在Python簡(jiǎn)介中提到Python是一種直譯式電腦編程語(yǔ)言,體現(xiàn)在語(yǔ)法中,如要將變量a賦值為1,Tcl使用命令%set a 1(本文中為了區(qū)分Tcl和Python的命令,Tcl命令前會(huì)加上“%”,否則默認(rèn)為Python命令),在python中命令為a = 1,輸出a的值可以直接輸入a,也可以通過print語(yǔ)句輸出a的值,命令為print a(在python 3.0以后版本中,print不再是一個(gè)語(yǔ)句,而是一個(gè)函數(shù),所以如果想要輸出a,用法為print(a))。在Tcl中求1和10的和或者變

6、量之間的加減乘除運(yùn)算需要使用expr命令,在python則直接寫表達(dá)式就可以了,如圖3所示。圖3Python很多功能都是靠模塊實(shí)現(xiàn)的,比如ftplib模塊負(fù)責(zé)ftp功能的實(shí)現(xiàn),math模塊囊括了基本數(shù)學(xué)公式,如果我們想要引用這些模塊,需要使用命令import 模塊名稱,如import ftplib和import math。如果想使用math模塊中的函數(shù)floor,可以使用命令math.floor(28.5),語(yǔ)法為“模塊.函數(shù)”,如果想要直接使用floor函數(shù),必須提前引用,命令為from math import floor,那樣就可以直接使用命令floor(28.5)了。如果覺得floor這

7、個(gè)函數(shù)名稱太長(zhǎng)了或者不好記憶,可以通過變量引用函數(shù),如f = math.floor,這樣變量f就充當(dāng)了math.floor的功能了。上面提到的模塊ftplib和math都是在python安裝的時(shí)候已經(jīng)安裝了,而接下來重點(diǎn)介紹的xlrd、xlwt、xlutils模塊都不是隨python安裝的。需要手動(dòng)下載安裝,第5節(jié)會(huì)詳細(xì)介紹模塊的安裝。當(dāng)成功導(dǎo)入了某個(gè)模塊后,可以通過函數(shù)dir (模塊名)查看這個(gè)模塊包含哪些函數(shù),如果對(duì)某個(gè)函數(shù)的作用不了解,可以通過help函數(shù)查看,如help(math.pow)本文只是帶領(lǐng)大家入門,python的其他語(yǔ)法可以參考其它資料學(xué)習(xí)。4 Tcl對(duì)Excel操作在使用

8、python對(duì)excel操作之前搜索過如何通過Tcl對(duì)excel操作,Tcl本身沒有提供對(duì)excel操作的命令,可以通過tcom外部包來調(diào)用excel的接口實(shí)現(xiàn),但是個(gè)人感覺實(shí)現(xiàn)起來比較麻煩,msdn網(wǎng)站上雖然提供了excel的接口,但示例都是針對(duì)VB腳本語(yǔ)言寫的,Tcl如果想要調(diào)用的話還需要轉(zhuǎn)換,如下是一段簡(jiǎn)單的Tcl代碼展示如何通過tcom對(duì)excel進(jìn)行操作,但也花了本人不少時(shí)間琢磨。# 加載tcom包package require tcomset filename "F:/1.xls"# 創(chuàng)建com實(shí)例,打開工作表,下面四句都是套路set excel :tcom:r

9、ef createobject "Excel.Application"set workbooks $excel Workbooksset workbook $workbooks Open $filenameset worksheets $workbook Worksheets# "sheet1"為sheet的名稱set worksheet $worksheets Item "sheet1"# 創(chuàng)建單元格對(duì)象set cells $worksheet Cells# 給單元格B2賦值為“hsdf”$cells Item 2 B "

10、hsdf"# 獲取sheet的個(gè)數(shù)并賦值給sheetCountset sheetCount $worksheets Count# 獲取A1至A15單元的范圍對(duì)象set range $worksheet Range A1 A15# 給A1至A15單元賦值$range Value2 "abcdefg"# 獲取A1至A15的值,并賦值給A,A是一個(gè)列表listset A $range Value2# 設(shè)置單元的背景色set interior $range Interior$interior Color expr 0x00FFE0# 設(shè)置單元的前景色和字體大小、加粗、斜體

11、、字體set font $range Font$font Color expr 0xFF0000$font Bold 1$font Size 10$font Italic 0$font Name "華文行楷"# 設(shè)置單元格的寬度為自動(dòng)調(diào)整set entire $range EntireColumn$entire AutoFit# 保存文檔$workbook Save# 顯示Excel$excel Visible 15 xlwt和xlrd模塊的安裝Python也是通過導(dǎo)入外部模塊來實(shí)現(xiàn)對(duì)excel的操作,xlrd負(fù)責(zé)對(duì)excel的讀取,xlwt負(fù)責(zé)對(duì)excel的寫入,xlut

12、ils依賴于xlrd和xlwt,可以復(fù)制excel文件。這三個(gè)包都可以在網(wǎng)站/下載。本文使用的xlrd版本為0.8.0,xlwt版本為0.7.5。從網(wǎng)上下載好xlrd和xlwt后,解壓縮到C:Python2.7.5Lib下,此時(shí)在命令行下輸入import xlrd或者import xlwt,會(huì)出現(xiàn)提示ImportError: No module named xlwt,這表明還沒有安裝xlwt模塊。python 導(dǎo)入一個(gè)模塊的過程要求有一個(gè)叫做“路徑搜索”的操作過程,即是在文件系統(tǒng)“預(yù)先設(shè)定的區(qū)域”查找模塊文件以加載模塊的過程。這個(gè)預(yù)先設(shè)定的區(qū)

13、域其實(shí)是python搜索路徑的一組目錄。這個(gè)目錄保存在sys.path中,如果你想知道python導(dǎo)入模塊時(shí)會(huì)在哪些路徑搜索模塊,你可以執(zhí)行以下命令查看搜索路徑目錄:>>> import sys>>> sys.path'D:pythonshell2.7.5','C:Python2.7.5Libidlelib','C:Python2.7.5libsite-packagessetuptools-1.3-py2.7.egg','C:Python2.7.5libsite-packagesxlutils-1.7.

14、0-py2.7.egg','C:Windowssystem32python27.zip','C:Python2.7.5DLLs','C:Python2.7.5lib','C:Python2.7.5libplat-win', 'C:Python2.7.5liblib-tk','C:Python2.7.5','C:Python2.7.5libsite-packages','C:Python2.7.5libsite-packageswin32','C:Pyt

15、hon2.7.5libsite-packageswin32lib','C:Python2.7.5libsite-packagesPythonwin'在sys.path中找到一個(gè)路徑為'C:Python2.7.5lib',所以我們把模塊解壓縮到這個(gè)目錄下。命令>>>sys.path.append('C:Python2.7.5lib')在最后添加一個(gè)目錄,sys.path.insert(0,' C:Python2.7.5lib ')在第一位插入一個(gè)目錄。解壓縮完成并放在正確目錄后,在cmd下進(jìn)入package

16、當(dāng)前目錄,然后輸入命令“C:Python2.7.5Libxlrd-0.8.0>python setup.py install”,安裝完成后可以輸入import xlrd,dir(xlrd)來確認(rèn)是否已經(jīng)安裝正確。6 xlrd簡(jiǎn)單使用方法>>>import xlrd>>>excel = xlrd.open_workbook("C:UsersHuZhangdongDesktopASB測(cè)試床環(huán)境信息圖.xls") #打開文件并將對(duì)象存儲(chǔ)到excel中>>>sheet = excel.sheet_by_index(0) #

17、通過索引讀取sheet對(duì)象,第一個(gè)sheet的索引為"0">>>row_3 = sheet.row_values(2) #讀取第3行的所有數(shù)據(jù),并以列表的形式存儲(chǔ)到row_3中>>>col_3 = sheet.col_values(2) #讀取第3列的所有數(shù)據(jù),并以列表list的形式存儲(chǔ)到col_3中>>>cell_12_7 = sheet.cell_value(11,6) #讀取第12行第7列的數(shù)據(jù),并存儲(chǔ)到cell_12_7中>>>cell_11_11 = sheet.cell(10,10).val

18、ue #讀取第11行第11列的數(shù)據(jù),并存儲(chǔ)到cell_11_11中>>>cell_7_8 = sheet.row(6)7.value #讀取第7行第8列的數(shù)據(jù)>>>cell_7_8 = sheet.cel(7)6.value #讀取第8列第7行的數(shù)據(jù)>>>num_rows = sheet.nrows #讀取sheet的總行數(shù)>>>num_cols = sheet.ncols #讀取sheet的總列數(shù)基本上面的命令已經(jīng)可以滿足目前對(duì)excel讀取的操作了,接下給大家講解xlwt的用法。7 xlwt簡(jiǎn)單使用方法#-*- cod

19、ing: UTF-8 -*- #設(shè)置編碼格式為 utf-8import os,xlwt,datetime #導(dǎo)入模塊data =xlwt.Workbook() #新建一個(gè)Workbooksheet = data.add_sheet(u"sheet") #新建一個(gè)sheet,名稱為'sheet'style1 = xlwt.XFStyle() #創(chuàng)建格式style1style2 = xlwt.XFStyle()style3 = xlwt.XFStyle()#設(shè)置字體格式font1 = xlwt.Font() #創(chuàng)建 = 'T

20、imes New Roman' #字體為'Times New Roman'font1.bold = True #加粗font1.colour_index = 2 #字體顏色為紅色,0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyanfont1.underline = xlwt.Font.UNDERLINE_DOUBLE #下劃線類型,UNDERLINE_DOUBLE 代表雙下劃線,另外還有 UNDERLINE_NONE, UNDERLINE_SINGLE

21、, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACCfont1.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT #設(shè)置上標(biāo)font1.family = xlwt.Font.FAMILY_ROMANfont1.height = 0x190 #0x190是16進(jìn)制,換成10進(jìn)制為400,然后除以20,就得到字體的大小為20style1.font = font1 #將創(chuàng)建的font1字體格式應(yīng)用到style1上font2 = xlwt.Font() #創(chuàng)建

22、 = "Algerian" #字體為'Algerian' font2.colour_index = 3 #字體顏色為綠色font2.italic = True #斜體font2.struck_out = True #刪除線font2.height = 0x258 #字體大小為30style2.font = font2 #將創(chuàng)建的font2字體格式應(yīng)用到style2上#設(shè)置列寬sheet.col(0).width = 6000sheet.col(1).width = 12000sheet.set_col_default_width(2)#設(shè)置單元格對(duì)齊方式al

23、ignment = xlwt.Alignment() #創(chuàng)建alignmentalignment.horz = xlwt.Alignment.HORZ_CENTER #設(shè)置水平對(duì)齊為居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTEDalignment.vert = xlwt.Alignment.VERT_CENTER #設(shè)置垂直對(duì)齊為居中,May be: VERT_TOP, VERT_C

24、ENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTEDstyle3.alignment = alignment #應(yīng)用alignment到style3上#插入時(shí)間style3.num_format_str = 'YYYY-MM-DD HH:MM:SS' #設(shè)置時(shí)間格式sheet.write(1,1,datetime.datetime.now(),style3) #在第2行第2列插入當(dāng)前時(shí)間,格式為style3#設(shè)置單元格背景顏色pattern_yellow = xlwt.Pattern() #創(chuàng)建pattern_yellowpa

25、ttern_yellow.pattern = xlwt.Pattern.SOLID_PATTERN #設(shè)置填充模式為全部填充pattern_yellow.pattern_fore_colour = 5 #設(shè)置填充顏色為yellow黃色style1.pattern = pattern_yellow #把設(shè)置的pattern應(yīng)用到style3上pattern_red = xlwt.Pattern() #創(chuàng)建pattern_redpattern_red.pattern = xlwt.Pattern.SOLID_PATTERN #設(shè)置填充模式為全部填充pattern_red.pattern_fore_

26、colour = 2 #設(shè)置填充顏色為red紅色style2.pattern = pattern_red #把設(shè)置的pattern應(yīng)用到style4上 #設(shè)置單元格邊框borders = xlwt.Borders() #創(chuàng)建bordersborders.left = xlwt.Borders.DASHED #設(shè)置左邊框的類型為虛線 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DO

27、T_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.borders.right = xlwt.Borders.THIN #設(shè)置右邊框的類型為細(xì)線borders.top = xlwt.Borders.DOTTED #設(shè)置上邊框的類型為打點(diǎn)的borders.bottom = xlwt.Borders.THICK #設(shè)置底部邊框類型為粗線borders.left_colour = 0x10 #設(shè)置左邊框線條顏色borders.right_colour = 0x20borders.top_

28、colour = 0x30borders.bottom_colour = 0x40style1.borders = borders #將borders應(yīng)用到style1上style2.borders = borders #將borders應(yīng)用到style2上sheet.write(3, 0, 'HuZhangdong', style1) #在第4行第1列寫入'HuZhangdong',格式引用style1sheet.write(4, 0, 'YinMengran' , style2) #在第5行第1列寫入'YinMengran',格式引用style2data.save(u'e:3.xls') #保存到 e:3.xls函數(shù)xlwt.Workbook()只能新建一個(gè)excel文

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論