Python讀寫Excel文件的實(shí)例
最近由于經(jīng)常要用到Excel,需要根據(jù)Excel表格中的內(nèi)容對(duì)一些apk進(jìn)行處理,手動(dòng)處理很麻煩,于是決定寫腳本來(lái)處理。首先貼出網(wǎng)上找來(lái)的讀寫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
#獲取行數(shù)
nrows = sh.nrows
#獲取列數(shù)
ncols = sh.ncols
print "nrows %d, ncols %d" % (nrows,ncols)
#獲取第一行第一列數(shù)據(jù)
cell_value = sh.cell_value(1,1)
#print cell_value
row_list = []
#獲取各行數(shù)據(jù)
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() #創(chuàng)建一個(gè)工作簿
ws = w.add_sheet('Hey, Hades') #創(chuàng)建一個(gè)工作表
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.再舉個(gè)自己寫的讀寫Excel的例子
讀取reflect.xls中的某些信息進(jìn)行處理后寫入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(',')
#獲取每個(gè)包的前兩個(gè)字段
for pkgdata in pkgdatas:
pkgdata = '.'.join((pkgdata.split('.'))[:2])
mydata.append(pkgdata)
#將列表排序
mydata = list(set(mydata))
print mydata
#將列表轉(zhuǎn)化為字符串
mydata = ','.join(mydata)
#寫入數(shù)據(jù)到每行的第一列
ws.write(i,0,mydata)
mydata = []
row_list.append(row_data[3])
#print row_list
w.save('mini.xls')
4.現(xiàn)在我需要根據(jù)Excel文件中滿足特定要求的apk的md5值來(lái)從服務(wù)器獲取相應(yīng)的apk樣本,就需要這樣做:
#-*-coding:utf8-*-
import xlrd
import os
import shutil
fname = "./excelname.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
#打開(kāi)Sheet1工作表
sh = bk.sheet_by_name("Sheet1")
except:
print "no sheet in %s named Sheet1" % fname
#獲取行數(shù)
nrows = sh.nrows
#獲取列數(shù)
ncols = sh.ncols
#print "nrows %d, ncols %d" % (nrows,ncols)
#獲取第一行第一列數(shù)據(jù)
cell_value = sh.cell_value(1,1)
#print cell_value
row_list = []
#range(起始行,結(jié)束行)
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/")
補(bǔ)充一個(gè)使用xlwt3進(jìn)行Excel文件的寫操作。
import xlwt3
if __name__ == '__main__':
datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二維數(shù)組
file_path = 'D:\\test.xlsx'
wb = xlwt3.Workbook()
sheet = wb.add_sheet('test')#sheet的名稱為test
#單元格的格式
style = 'pattern: pattern solid, fore_colour yellow; '#背景顏色為黃色
style += 'font: bold on; '#粗體字
style += 'align: horz centre, vert center; '#居中
header_style = xlwt3.easyxf(style)
row_count = len(datas)
col_count = len(datas[0])
for row in range(0, row_count):
col_count = len(datas[row])
for col in range(0, col_count):
if row == 0:#設(shè)置表頭單元格的格式
sheet.write(row, col, datas[row][col], header_style)
else:
sheet.write(row, col, datas[row][col])
wb.save(file_path)
輸出的文件內(nèi)容如下圖:

注:以上代碼在Python 3.x版本測(cè)試通過(guò)。
好了,python操作Excel就這么!些了,簡(jiǎn)單吧
相關(guān)文章
Python中處理字符串之endswith()方法的使用簡(jiǎn)介
這篇文章主要介紹了Python中處理字符串之endswith()方法的使用,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
python之Flask實(shí)現(xiàn)簡(jiǎn)單登錄功能的示例代碼
這篇文章主要介紹了python之Flask實(shí)現(xiàn)簡(jiǎn)單登錄功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
python實(shí)現(xiàn)銀行管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
PyCharm最新激活碼(2020/10/27全網(wǎng)最新)
Pycharm最新激活碼全網(wǎng)最新(2020/10/27更新),適用Intellij idea 2020.2.x,WebStorm 2020.2.x,Pycharm 2020.2.x2020-10-10
Centos5.x下升級(jí)python到python2.7版本教程
這篇文章主要介紹了Centos5.x下升級(jí)python到python2.7版本教程,本文使用編譯安裝方式,并配置了一系列需要更改的配置項(xiàng),需要的朋友可以參考下2015-02-02
Python中如何將Tqdm與Asyncio結(jié)合使用呢
這篇文章主要和大家詳細(xì)介紹了在Python中如何將Tqdm與Asyncio結(jié)合使用呢,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05
python 3.0 模擬用戶登錄功能并實(shí)現(xiàn)三次錯(cuò)誤鎖定
Python的3.0版本,常被稱為Python 3000,或簡(jiǎn)稱Py3k。這篇文章主要介紹了python 3.0 模擬用戶登錄功能并實(shí)現(xiàn)三次錯(cuò)誤鎖定,需要的朋友可以參考下2017-11-11
pandas DataFrame 交集并集補(bǔ)集的實(shí)現(xiàn)
這篇文章主要介紹了pandas DataFrame 交集并集補(bǔ)集的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06

