Python讀寫Excel文件的實例

来源:互联网 发布:ug内螺纹螺纹铣刀编程 编辑:程序博客网 时间:2024/06/05 11:38

最近由於經常要用到Excel,需要根據Excel表格中的內容對一些apk進行處理,手動處理很麻煩,於是決定寫腳本來處理。首先貼出網上找來的讀寫Excel的腳本。

1.讀取Excel(需要安裝xlrd):


#-*- coding: utf8 -*-
import xlrd

fname = "reflect.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
sh = bk.sheet_by_name("Sheet1")
except:
print "no sheet in %s named Sheet1" % fname
#獲取行數
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)

2.寫入Excel(需安裝pyExcelerator)

from pyExcelerator import *
w = Workbook() #創建一個工作簿
ws = w.add_sheet('Hey, Hades') #創建一個工作表
ws.write(0,0,'bit') #在1行1列寫入bit
ws.write(0,1,'huang') #在1行2列寫入huang
ws.write(1,0,'xuan') #在2行1列寫入xuan
w.save('mini.xls') #保存

3.再舉個自己寫的讀寫Excel的例子
讀取reflect.xls中的某些信息進行處理後寫入mini.xls文件中。 

#-*- coding: utf8 -*-
import xlrd
from pyExcelerator import *

w = Workbook()
ws = w.add_sheet('Sheet1')
fname = "reflect.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
sh = bk.sheet_by_name("Sheet1")
except:
print "no sheet in %s named Sheet1" % fname
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 = []
mydata = []
for i in range(1,nrows):
row_data = sh.row_values(i)
pkgdatas = row_data[3].split(',')
#pkgdatas.split(',')
#獲取每個包的前兩個欄位
for pkgdata in pkgdatas:
pkgdata = '.'.join((pkgdata.split('.'))[:2])
mydata.append(pkgdata)
#將列表排序
mydata = list(set(mydata))
print mydata
#將列錶轉化為字元串
mydata = ','.join(mydata)
#寫入數據到每行的第一列
ws.write(i,0,mydata)
mydata = []
row_list.append(row_data[3])
#print row_list
w.save('mini.xls')

4.現在我需要根據Excel文件中滿足特定要求的apk的md5值來從伺服器獲取相應的apk樣本,就需要這樣做: 

#-*-coding:utf8-*-
import xlrd
import os
import shutil

fname = "./excelname.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
#打開Sheet1工作表
sh = bk.sheet_by_name("Sheet1")
except:
print "no sheet in %s named Sheet1" % fname
#獲取行數
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 = []
#range(起始行,結束行)
for i in range(1,nrows):
row_data = sh.row_values(i)
if row_data[6] == "HXB":
filename = row_data[3]+".apk"
#print "%s %s %s" %(i,row_data[3],filename)
filepath = r"./1/"+filename
print "%s %s %s" %(i,row_data[3],filepath)
if os.path.exists(filepath):
shutil.copy(filepath, r"./myapk/")
0 0