Python對Excel操做詳解

 

Python對Excel操做詳解python

文檔摘要:shell

本文檔主要介紹如何經過pythonoffice excel進行讀寫操做,使用了xlrdxlwtxlutils模塊。另外還演示瞭如何經過Tcl  tcom包對excel操做。編程

 

關鍵字:windows

PythonExcelxlrdxlwtxlutilsTCltcom網絡

 

 

Python簡介app

Python是一種面向對象、直譯式電腦編程語言,具備近二十年的發展歷史,成熟且穩定。它包含了一組完善並且容易理解的標準庫,可以輕鬆完成不少常見的任務。它的語法簡捷和清晰,儘可能使用無異義的英語單詞,與其它大多數程序設計語言使用大括號不同,它使用縮進來定義語句塊。編程語言

SchemeRubyPerlTcl等動態語言同樣,Python具有垃圾回收功能,可以自動管理存儲器使用。它常常被看成腳本語言用於處理系統管理任務和網絡程序編寫,然而它也很是適合完成各類高級任務。Python虛擬機自己幾乎能夠在全部的做業系統中運行。使用一些諸如py2exePyPyPyInstaller之類的工具能夠將Python源代碼轉換成能夠脫離Python解釋器運行的程序。函數

Python安裝工具

Python目前的版本已經更新到3.4.0,本文使用的版本爲2.7.5,全部的版本均可以在python官網http://www.python.org/下載,至於2.x3.x版本的具體區別也能夠在官網查看。學習

從官網下載了python 2.7.5安裝文件python-2.7.5.msi後,直接雙擊就能夠安裝python了,能夠選擇安裝路徑,我改成C:\Python2.7.5\了,而後一路next就完成安裝了,安裝完成後在C盤下就多了一個文件夾Python2.7.5

Python也是一種實時交互語言,能夠經過自帶的IDLE編寫python語句並反饋回顯信息,能夠經過圖1方式調出python IDLE

 

1

也能夠在cmd下輸入python,但默認狀況下python並無添加到windows環境變量中,致使在cmd下輸入python的時候出現提示「'python' 不是內部或外部命令,也不是可運行的程序或批處理文件。」,windows下可執行文件在運行時首先在當前目錄下搜索,由於進入cmd下默認路徑通常爲C:\Documents and Settings\Administrator>,而在這個路徑下是找不到python的,因此提示出錯,能夠進入到python安裝目錄下,而後執行python就能夠進入交互命令行模式下。若是懶的每次都進入python安裝,此時須要將python安裝路徑添加到系統變量中,而後windows在執行命令的時候會去環境變量中查找路徑,具體配置如圖2所示,在Path中添加python的安裝路徑「C:\Python2.7.5;」,主要路徑後面要加」;」分號表面這是一個路徑的結束,此時不管在哪一個路徑下均可以執行python調出交互命令行。

 

2

Python語法入門

Python簡介中提到Python是一種直譯式電腦編程語言,體如今語法中,如要將變量a賦值爲1Tcl使用命令%set a 1本文中爲了區分TclPython的命令,Tcl命令前會加上「%」,不然默認爲Python命令),在python中命令爲a = 1,輸出a的值能夠直接輸入a,也能夠經過print語句輸出a的值,命令爲print a(在python 3.0之後版本中,print再也不是一個語句,而是一個函數,因此若是想要輸出a,用法爲print(a))。在Tcl中求110的和或者變量之間的加減乘除運算須要使用expr命令,在python則直接寫表達式就能夠了,如圖3所示。

 

3

Python不少功能都是靠模塊實現的,好比ftplib模塊負責ftp功能的實現,math模塊囊括了基本數學公式,若是咱們想要引用這些模塊,須要使用命令import 模塊名稱,如import ftplibimport math。若是想使用math模塊中的函數floor,可使用命令math.floor(28.5),語法爲「模塊.函數」,若是想要直接使用floor函數,必須提早引用,命令爲from math import floor,那樣就能夠直接使用命令floor(28.5)了。若是以爲floor這個函數名稱太長了或者很差記憶,能夠經過變量引用函數,如f = math.floor,這樣變量f就充當了math.floor的功能了。上面提到的模塊ftplibmath都是在python安裝的時候已經安裝了,而接下來重點介紹的xlrdxlwtxlutils模塊都不是隨python安裝的。須要手動下載安裝,第5節會詳細介紹模塊的安裝。

當成功導入了某個模塊後,能夠經過函數dir (模塊名)查看這個模塊包含哪些函數,若是對某個函數的做用不了解,能夠經過help函數查看,如help(math.pow)

本文只是帶領你們入門,python的其餘語法能夠參考其它資料學習。

 

TclExcel操做

在使用pythonexcel操做以前搜索過如何經過Tclexcel操做,Tcl自己沒有提供對excel操做的命令,能夠經過tcom外部包來調用excel的接口實現,可是我的感受實現起來比較麻煩,msdn網站上雖然提供了excel的接口,但示例都是針對VB腳本語言寫的,Tcl若是想要調用的話還須要轉換,以下是一段簡單的Tcl代碼展現如何經過tcomexcel進行操做,但也花了本人很多時間琢磨。

# 加載tcom

package require tcom

set filename "F:/1.xls"

# 建立com實例,打開工做表,下面四句都是套路

set excel [::tcom::ref createobject "Excel.Application"]

set workbooks [$excel Workbooks]

set workbook [$workbooks Open $filename]

set worksheets [$workbook Worksheets]

# "sheet1"sheet的名稱

set worksheet [$worksheets Item "sheet1"]

# 建立單元格對象

set cells [$worksheet Cells]

# 給單元格B2賦值爲「hsdf

$cells Item 2 B "hsdf"

# 獲取sheet的個數並賦值給sheetCount

set sheetCount [$worksheets Count]

# 獲取A1A15單元的範圍對象

set range [$worksheet Range A1 A15]

# A1A15單元賦值

$range Value2 "abcdefg"

# 獲取A1A15的值,並賦值給A,A是一個列表list

set  A  [$range Value2]

# 設置單元的背景色

set interior [$range Interior]

$interior Color [expr 0x00FFE0]

# 設置單元的前景色和字體大小、加粗、斜體、字體

set font [$range Font]

$font Color [expr 0xFF0000]

$font Bold 1

$font Size 10

$font Italic 0

$font Name "華文行楷"

# 設置單元格的寬度爲自動調整

set entire [$range EntireColumn]

$entire AutoFit

# 保存文檔

$workbook Save

# 顯示Excel

$excel Visible 1

xlwtxlrd模塊的安裝

Python也是經過導入外部模塊來實現對excel的操做,xlrd負責對excel的讀取,xlwt負責對excel的寫入,xlutils依賴於xlrdxlwt,能夠複製excel文件。這三個包均可以在網站http://www.python-excel.org/下載。本文使用的xlrd版本爲0.8.0xlwt版本爲0.7.5。從網上下載好xlrdxlwt後,解壓縮到C:\Python2.7.5\Lib下,此時在命令行下輸入import xlrd或者import xlwt,會出現提示ImportError: No module named xlwt,這代表尚未安裝xlwt模塊。

python 導入一個模塊的過程要求有一個叫作「路徑搜索」的操做過程,便是在文件系統「預先設定的區域」查找模塊文件以加載模塊的過程。這個預先設定的區域實際上是python搜索路徑的一組目錄。這個目錄保存在sys.path中,若是你想知道python導入模塊時會在哪些路徑搜索模塊,你能夠執行如下命令查看搜索路徑目錄:

>>> import sys
>>> sys.path
['D:\\python\\shell\\2.7.5','C:\\Python2.7.5\\Lib\\idlelib','C:\\Python2.7.5\\lib\\site-packages\\setuptools-1.3-py2.7.egg','C:\\Python2.7.5\\lib\\site-packages\\xlutils-1.7.0-py2.7.egg','C:\\Windows\\system32\\python27.zip','C:\\Python2.7.5\\DLLs','C:\\Python2.7.5\\lib','C:\\Python2.7.5\\lib\\plat-win', 'C:\\Python2.7.5\\lib\\lib-tk','C:\\Python2.7.5','C:\\Python2.7.5\\lib\\site-packages','C:\\Python2.7.5\\lib\\site-packages\\win32','C:\\Python2.7.5\\lib\\site-packages\\win32\\lib','C:\\Python2.7.5\\lib\\site-packages\\Pythonwin']

sys.path中找到一個路徑爲'C:\\Python2.7.5\\lib',因此咱們把模塊解壓縮到這個目錄下。命令>>>sys.path.append('C:\\Python2.7.5\\lib')在最後添加一個目錄,sys.path.insert(0,' C:\\Python2.7.5\\lib ')在第一位插入一個目錄。

解壓縮完成並放在正確目錄後,在cmd下進入package當前目錄,而後輸入命令「C:\Python2.7.5\Lib\xlrd-0.8.0>python setup.py install」,安裝完成後能夠輸入import xlrddir(xlrd)來確認是否已經安裝正確。

xlrd簡單使用方法

>>>import xlrd

>>>excel = xlrd.open_workbook("C:\Users\HuZhangdong\Desktop\ASB測試牀環境信息圖.xls")  #打開文件並將對象存儲到excel

>>>sheet = excel.sheet_by_index(0) #經過索引讀取sheet對象,第一個sheet的索引爲"0"

>>>row_3 = sheet.row_values(2) #讀取第3行的全部數據,並以列表的形式存儲到row_3

>>>col_3 = sheet.col_values(2) #讀取第3列的全部數據,並以列表list的形式存儲到col_3

>>>cell_12_7 = sheet.cell_value(11,6)   #讀取第12行第7列的數據,並存儲到cell_12_7

>>>cell_11_11 = sheet.cell(10,10).value #讀取第11行第11列的數據,並存儲到cell_11_11

>>>cell_7_8 = sheet.row(6)[7].value       #讀取第7行第8列的數據

>>>cell_7_8 = sheet.cel(7)[6].value        #讀取第8列第7行的數據

>>>num_rows = sheet.nrows             #讀取sheet的總行數

>>>num_cols = sheet.ncols               #讀取sheet的總列數

 

基本上面的命令已經能夠知足目前對excel讀取的操做了,接下給你們講解xlwt的用法。

xlwt簡單使用方法

#-*- coding: UTF-8 -*-   #設置編碼格式爲 utf-8

 

import os,xlwt,datetime   #導入模塊

 

data =xlwt.Workbook()   #新建一個Workbook

sheet = data.add_sheet(u"sheet")   #新建一個sheet,名稱爲'sheet'

 

style1 = xlwt.XFStyle()   #建立格式style1

style2 = xlwt.XFStyle()

style3 = xlwt.XFStyle()

 

#設置字體格式

font1 = xlwt.Font()   #建立font1

font1.name = 'Times 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 = Cyan

font1.underline = xlwt.Font.UNDERLINE_DOUBLE  #下劃線類型,UNDERLINE_DOUBLE 表明雙下劃線,另外還有 UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC

font1.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT   #設置上標

font1.family = xlwt.Font.FAMILY_ROMAN

font1.height = 0x190 #0x19016進制,換成10進製爲400,而後除以20,就獲得字體的大小爲20

style1.font = font1  #將建立的font1字體格式應用到style1

 

font2 = xlwt.Font()   #建立font2

font2.name = "Algerian"    #字體爲'Algerian'       

font2.colour_index = 3   #字體顏色爲綠色

font2.italic = True  #斜體

font2.struck_out = True   #刪除線

font2.height = 0x258   #字體大小爲30

style2.font = font2  #將建立的font2字體格式應用到style2

 

#設置列寬

sheet.col(0).width = 6000

sheet.col(1).width = 12000

sheet.set_col_default_width(2)

 

#設置單元格對齊方式

alignment = xlwt.Alignment()    #建立alignment

alignment.horz = xlwt.Alignment.HORZ_CENTER   #設置水平對齊爲居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER   #設置垂直對齊爲居中,May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED

style3.alignment = alignment   #應用alignmentstyle3

 

#插入時間

style3.num_format_str = 'YYYY-MM-DD HH:MM:SS'   #設置時間格式

sheet.write(1,1,datetime.datetime.now(),style3)   #在第2行第2列插入當前時間,格式爲style3

 

#設置單元格背景顏色

pattern_yellow = xlwt.Pattern()  #建立pattern_yellow

pattern_yellow.pattern = xlwt.Pattern.SOLID_PATTERN  #設置填充模式爲所有填充

pattern_yellow.pattern_fore_colour = 5    #設置填充顏色爲yellow黃色

style1.pattern = pattern_yellow  #把設置的pattern應用到style3

pattern_red = xlwt.Pattern()  #建立pattern_red

pattern_red.pattern = xlwt.Pattern.SOLID_PATTERN   #設置填充模式爲所有填充

pattern_red.pattern_fore_colour = 2  #設置填充顏色爲red紅色

style2.pattern = pattern_red  #把設置的pattern應用到style4

 

#設置單元格邊框

borders = xlwt.Borders()   #建立borders

borders.left = xlwt.Borders.DASHED #設置左邊框的類型爲虛線 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.

borders.right = xlwt.Borders.THIN  #設置右邊框的類型爲細線

borders.top = xlwt.Borders.DOTTED   #設置上邊框的類型爲打點的

borders.bottom = xlwt.Borders.THICK  #設置底部邊框類型爲粗線

borders.left_colour = 0x10  #設置左邊框線條顏色

borders.right_colour = 0x20

borders.top_colour = 0x30

borders.bottom_colour = 0x40

style1.borders = borders    #borders應用到style1

style2.borders = borders    #borders應用到style2

 

sheet.write(3, 0, 'HuZhangdong', style1)   #在第4行第1列寫入'HuZhangdong',格式引用style1

sheet.write(4, 0, 'YinMengran' , style2)   #在第5行第1列寫入'YinMengran',格式引用style2

 

data.save(u'e:\\3.xls')   #保存到 e:\\3.xls

 

函數xlwt.Workbook()只能新建一個excel文檔,不能打開一個已經存在的文檔,下一章會講解如何經過xlutils修改一個已經存在的excel文檔。

xlutils簡單使用方法

本章將講解如何使用xlutils編輯一個已經存在的文檔,須要導入xlutils模塊,下載地址是http://www.python-excel.org/,模塊成功安裝後就開始編寫腳本吧。

#-*- coding:utf-8 -*-     #設置當前編碼格式爲utf-8

import xlwt       #導入xlwt模塊

import xlrd       #導入xlrd模塊

from xlutils.copy import copy       #導入import模塊的copy函數,接下來就能夠直接使用函數copy了。

 

fileName = "E:\\4.xls"

sheetName = "sheet1"

 

styleBoldRed = xlwt.easyxf('font: color-index red, bold on')   #設置字體,顏色爲紅色,加粗

oldWb = xlrd.open_workbook(fileName, formatting_info=True)   #使用xlrd.open_workbook函數打開文件,formatting_info=True表示保留該文件的格式

newWb = copy(oldWb)   #經過copy函數把oldWb copynewWb,而後經過編輯newWb來實現編輯已經存在的文件。

newWs = newWb.get_sheet(0)   #讀取第一個sheet

newWs.write(4, 0, "value1",styleBoldRed)    #5行第1列寫入值「value1」,格式採用styleBoldRed

newWs.write(4, 1, "value2",styleBoldRed)   #5行第2列寫入值「value2

newWs.write(4, 2, "value3",styleBoldRed)   #5行第3列寫入值「value3

newWb.save(fileName)   #文件保存爲"E:\\4.xls"

相關文章
相關標籤/搜索