python把数据写入excel_Python读取和写入Excel文件(转)
學(xué)習(xí)用Python處理Excel文件,這里主要用xlrd和xlwt模塊,用前需要安裝!本文是來(lái)自幾篇博客和官網(wǎng)tutorial的整理,主要是一個(gè)入門(mén)。更多的處理Excel的方法請(qǐng)到官網(wǎng)學(xué)習(xí),鏈接為:http://www.simplistix.co.uk/presentations/python-excel.pdf
另外,幾篇博客的參考資料:
http://syue.com/Software/Language/Python/21655.html
http://blog.csdn.net/wangxiaoyan1988/article/details/6562374
http://www.2cto.com/kf/201207/140006.html
安裝xlrd模塊:到python官網(wǎng)下載http://pypi.python.org/pypi/xlrd模塊安裝,前提是已經(jīng)安裝了python 環(huán)境。
解壓后,打開(kāi)cmd切換到對(duì)應(yīng)目錄,去執(zhí)行:D:\dev_tools\python\excel\xlrd-1.0.0>setup.py install
安裝成功!
安裝xlutils模塊: http://pypi.python.org/pypi/xlutils 去下載最新版本的,解壓后,打開(kāi)cmd切換到對(duì)應(yīng)目錄,去執(zhí)行:D:\dev_tools\python\excel\xlutils-2.0.0>setup.py install,安裝完成。
A:Excel數(shù)據(jù)的類(lèi)型及組織方式
每一個(gè)Excel數(shù)據(jù)文件從上至下分為三個(gè)層級(jí)的對(duì)象:
workbook: 每一個(gè)Excel文件就是一個(gè)workbook。
sheet: 每一個(gè)workbook中可以包含多個(gè)sheet,具體就對(duì)應(yīng)Excel中我們?cè)谧笙履_所看到的“sheet1”,“sheet2”等。
cell: 每一個(gè)sheet就是我們通常所看到的一個(gè)表格,可以含有m行,n列,每個(gè)確定的行號(hào),列號(hào)所對(duì)應(yīng)的一個(gè)格子就是一個(gè)cell。
B: 從Excel中讀取數(shù)據(jù)
從一個(gè)既有的xlsx文件中讀取數(shù)據(jù),按照Excel文件的三個(gè)層級(jí),分別做以下三個(gè)步驟
1. 打開(kāi)workbook:
import xlrd
book = xlrd.open_workbook("myfile.xls") #book就賦值為一個(gè)Excel文件了
注:
Book 類(lèi)的方法、屬性等:即就可以對(duì)上面的book進(jìn)行操作了
book.nsheets: 在Book對(duì)象中的文件有多少個(gè)worksheet
book.sheet_by_index(sheetx): 根據(jù)提供的sheetx索引來(lái)獲取我們需要的sheet表,返回的是一個(gè)Sheet類(lèi)的實(shí)例。
book.sheet_by_name(sheet_name): 根據(jù)提供的sheet_name來(lái)獲取對(duì)應(yīng)名稱(chēng)的sheet類(lèi)對(duì)象,返回的也是一個(gè)Sheet類(lèi)的對(duì)象
book.sheet_names(): 在Book對(duì)象中的所有sheet表的名稱(chēng)列表
book.sheets(): 返回在Book對(duì)象中所有的Sheet對(duì)象實(shí)例列表
2. 打開(kāi)所需的sheet:
sh = book.sheet_by_index(0) #獲得一個(gè)sheet,也可以使名字獲得
print sh.name, sh.nrows, sh.ncols
注:
Sheet類(lèi)方法、屬性等:
sh.cell(rowx, colx): 根據(jù)給出的行和列的參數(shù)獲取得到cell類(lèi),返回一個(gè)Cell類(lèi)實(shí)例對(duì)象
sh.cell_type(rowx, colx): 返回對(duì)應(yīng)的cell對(duì)象的Type類(lèi)型
sh.cell_value(rowx, colx): 返回對(duì)應(yīng)的cell對(duì)象的value值
sh.col(colx): 返回指定列的所有cell類(lèi)對(duì)象序列
sh.name: 返回sheet對(duì)象的名稱(chēng)
sh.ncols: 返回在sheet對(duì)象中的列的數(shù)目
sh.nrows: 返回在sheet對(duì)象中的行的數(shù)目
sh.row(rowx): 返回指定的行的所有cell對(duì)象的序列
3. 獲取對(duì)應(yīng)cell的值:
cell=sh.cell(rowx=29, colx=3) #根據(jù)給出的行和列的參數(shù)獲取得到cell類(lèi),返回一個(gè)Cell類(lèi)實(shí)例對(duì)象
sh.cell_value(rowx=29, colx=3)
Cell類(lèi)的屬性、方法如下:
Cell類(lèi)對(duì)象有3種屬性:ctype, value, xf_index
如果在excel文件打開(kāi)的時(shí)候,formatting_info未啟用的時(shí)候,xf_index是為None
下面列出了cell的類(lèi)型,以及他們?cè)趐ython中所代表的值
type symbol type number python value
XL_CELL_EMPTY 0 空的字符串''
XL_CELL_TEXT 1 unicode字符串
XL_CELL_NUMBER 2 float
XL_CELL_DATE 3 float
XL_CELL_BOOLEAN 4 int;1 --- True,0 --- False
XL_CELL_ERROR 5 int代表是一個(gè)excel內(nèi)部錯(cuò)誤碼;
XL_CELL_BLANK 6 空的字符串'', 注意:這個(gè)類(lèi)型僅僅會(huì)出現(xiàn),當(dāng)函數(shù)open_workbook(..,formatting_info=True)這樣設(shè)置的時(shí)候
4.一個(gè)讀取Excel的例子
import xlrd
book = xlrd.open_workbook("myfile.xls")
print "The number of worksheets is", book.nsheets
print "Worksheet name(s):", book.sheet_names()
sh = book.sheet_by_index(0)
print sh.name, sh.nrows, sh.ncols
print "Cell D30 is", sh.cell_value(rowx=29, colx=3)
for rx in range(sh.nrows):
print sh.row(rx)
C: Writing Excel Files
All the examples shown below can be found in the xlwt directory of the course material.讀Excel xlrd模塊,寫(xiě)用xlwt模塊
1. Creating elements within a Workbook創(chuàng)建一個(gè)Excel文件
Import xlwt
wb=xlwt.Workbook(“zc.xls”) #Workbook 首字母大寫(xiě)
2. Worksheets 添加Sheet
Worksheets are created with the add_sheet method of the Workbook class.
To retrieve an existing sheet from a Workbook, use its get_sheet method. This method is particularly useful when the Workbook has been instantiated by xlutils.copy.
Sheet1=wb.add_sheet(“sheetname”)
3. Rows and Columns 行與列的表示:
row1 = sheet1.row(1)
col0=sheet2.col(0)
4. Cells
Cells can be written using either the write method of either the Worksheet or Row class.
sheet1.write(0,1,'B1')
row1.write(0,'A2')
5. svave 保存文件:
wb.save(“zc.xls”)
6. Excel寫(xiě)入的一個(gè)簡(jiǎn)單的例子
from xlwt import Workbook
book = Workbook()
sheet1 = book.add_sheet('Sheet 1') #添加一個(gè)sheet
book.add_sheet('Sheet 2')
sheet1.write(0,0,'A1') #通過(guò)sheet添加cell值
sheet1.write(0,1,'B1')
row1 = sheet1.row(1)
row1.write(0,'A2') #還可以通過(guò)row屬性添加cell值
row1.write(1,'B2')
sheet1.col(0).width = 10000
sheet2 = book.get_sheet(1)
sheet2.row(0).write(0,'Sheet 2 A1') #又一種添加
sheet2.row(0).write(1,'Sheet 2 B1')
sheet2.flush_row_data()
sheet2.write(1,0,'Sheet 2 A3')
sheet2.col(0).width = 5000
sheet2.col(0).hidden = True
book.save('simple.xls')
D: 稍微復(fù)雜的例子和鞏固
Ex1:
import xlrd
fname = "sample.xls" #一個(gè)文件路徑和文件名
bk = xlrd.open_workbook(fname) #打開(kāi)一個(gè)workbook
shxrange = range(bk.nsheets) #各個(gè)sheet之間的轉(zhuǎn)換?
try: #提取sheet1?
sh = bk.sheet_by_name("Sheet1")
except:
print "no sheet in %s named Sheet1" % fname
return None
nrows = sh.nrows
ncols = sh.ncols
print "nrows %d, ncols %d" % (nrows, ncols)
cell_value = sh.cell_value(1,1)
print cell_value
row_list = []
for i in range(1, nrows):
row_data = sh.row_values(i)
row_list.append(row_data)
ex2:
1
2 import xlrd
3 import xlwt
4
5 class OperExcel():
6 #讀取Excel表
7 def rExcel(self,inEfile,outfile):
8 rfile = xlrd.open_workbook(inEfile)
9 #創(chuàng)建索引順序獲取一個(gè)工作表
10 table = rfile.sheet_by_index(0)
11 #其他方式
12 #table = rfile.sheets()[0]
13 #table = rfile.sheet_by_name(u'Sheet1')
14
15 #獲取整行,整列的值
16 table.row_values(0)
17 table.col_values(0)
18
19 #獲取行數(shù)和列數(shù)
20 nrows = table.nrows - 1
21 ncols = table.ncols
22
23 #循環(huán)獲取列表的數(shù)據(jù)
24 #for i in range(nrows):
25 # print table.row_values(i)
26 wfile = open(outfile,'w')
27 #獲取第一列中的所有值
28 for i in range(nrows):
29 #table.cell(i,0).value獲取某一單元格的值
30 wfile.write(table.cell(i,0).value.encode('utf8') + '\n')
31 wfile.close()
32
33 #將數(shù)據(jù)寫(xiě)入Excel表
34 def wExcel(self,infile,outEfile):
35 rfile = open(infile,'r')
36 buf = rfile.read().split('\n')
37 rfile.close()
38
39 w = xlwt.Workbook()
40 sheet = w.add_sheet('sheet1')
41 for i in range(len(buf)):
42 print buf[i]
43 sheet.write(i,0,buf[i].decode('utf8'))
44 w.save(outEfile)
45
46 if __name__ == '__main__':
47 t = OperExcel()
48 t.rExcel('test.xls','test')
49 t.wExcel('test','1.xls')
50 # 作者:sunrise
總結(jié)
以上是生活随笔為你收集整理的python把数据写入excel_Python读取和写入Excel文件(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 银行卡密码有8位的吗
- 下一篇: python代码执行过程记录_[原创]I