1. 程式人生 > >python提取excel文件內容到新文件

python提取excel文件內容到新文件

參考:http://blog.csdn.net/cloudox_/article/details/53812213

import xlrd
import xlwt
import re

#開啟檔案,如果沒開啟則列印錯誤
def open_excel(file):
	try:
		data=xlrd.open_workbook(file)
		return data
	except Exception as e:
		print (str(e))
		
#寫入新的excel表	
def write_excel(file='result.xls',list=[]):
	#建立一個工作工作簿
	book=xlwt.Workbook()
	#在上面建立sheet1,名稱為enroll
	sheet1=book.add_sheet('enroll')
	
	#從第0行開始講list中的row寫入新的sheet中
	i=0
	#list中的每一行
	for app in list:
		#每一行中的每一列中的元素x
		j=0
		for x in app:
			sheet1.write(i,j,x)
			#列數遞增
			j=j+1
		#行數遞增
		i=i+1
	#儲存檔案
	book.save(file)	
		
def excel_table_byindex(file,colnameindex=0,by_index=0):
	#開啟檔案
	data=open_excel(file)
	#取工作簿上的第一個sheet
	table=data.sheets()[0]
	
	#行數和列數
	nrows=table.nrows
	ncols=table.ncols
	
	#預設第0行的值
	colnames=table.row_values(colnameindex)
	
	#建立list來存每一行的值
	list=[]
	#將第一個標題欄加入到list中
	list.append(table.row_values(0))
	
	#將滿足條件的行加入到list中
	for rownum in range(1,nrows):#從標題欄的下一行開始遍歷每一個行
		row=table.row_values(rownum)#某一行的資料
		#如果這一行存在的話
		if row:
			#if float(table.cell(rownum,8).value)>390.0:
			#將這一行的第3列值與正則表示式匹配
			if re.match(r'李\s*',table.cell(rownum,2).value):
				#匹配成功,加入list中
				list.append(row)
				
	#寫入新的excel表		
	write_excel('result.xls',list)
	return list
	

	
def main():
	tables=excel_table_byindex('pytest.xls')
	#列印每一行
	for row in tables:
		print (row)

		
if __name__ =='__main__':
	main()