python 读写Excel

# coding=gbk
__author__ = 'wds'

import xlrd
import xlwt
import sys

def pyExcel(infile = 'infile.xlsx', curday='2015-01-01'):

	outfile = curday + '.xls'
	
	key_walk = unicode("步", "gbk")
	key_run = unicode("跑", "gbk")
	
	key_more = unicode("多", "gbk")
	key_less = unicode("少", "gbk")
	key_fast = unicode("快", "gbk")
	key_slow = unicode("慢", "gbk")
	key_cha = unicode("差", "gbk")
	key_buzhun = unicode("不准", "gbk")
	key_record = unicode("记录", "gbk")
	key_other = unicode("其他", "gbk")
	
	key_duoshao = unicode("多少", "gbk")
	key_tongbu = unicode("同步", "gbk")
	
	key_class = unicode("类别", "gbk")
	quan0 = unicode("全0问题", "gbk")
	quan255 = unicode("255问题", "gbk")
	
	try:
		rbook = xlrd.open_workbook(infile)
	except Exception,e:
		print str(e)
		
	rtable = rbook.sheet_by_index(0)
	
	nrows = rtable.nrows
	ncols = rtable.ncols
	
	wbook = xlwt.Workbook(encoding='utf-8')
	wtable = wbook.add_sheet(unicode("计步相关所有问题", "gbk"), cell_overwrite_ok=True)
	wtable_buzhun = wbook.add_sheet(unicode("计步不准问题", "gbk"), cell_overwrite_ok=True)
	wtable_others = wbook.add_sheet(unicode("其他相关问题", "gbk"), cell_overwrite_ok=True)
	
	wtable.col(1).width = 20000
	wtable.col(2).width = 5000
	wtable.col(3).width = 5000
	wtable.col(6).width = 5000
	wtable.col(7).width = 8000
	
	wtable_buzhun.col(1).width = 20000
	wtable_buzhun.col(2).width = 5000
	wtable_buzhun.col(3).width = 5000
	wtable_buzhun.col(6).width = 5000
	wtable_buzhun.col(7).width = 8000
	
	wtable_others.col(1).width = 20000
	wtable_others.col(2).width = 5000
	wtable_others.col(3).width = 5000
	wtable_others.col(6).width = 5000
	wtable_others.col(7).width = 8000
	
	style0 = xlwt.easyxf('font: height 240, bold True')
	style1 = xlwt.easyxf('font: height 220; align: horizontal left; align: wrap on')
	style2 = xlwt.easyxf('font: height 220, colour red; align: horizontal left; align: wrap on')
	
	num = 0
	num_buzhun = 0
	num_other = 0
	for i in range(0, nrows):
		rowdata = rtable.row_values(i)
		feedbackData = rowdata[1]
		
		feedbackDataReplaced = feedbackData.replace(key_tongbu, '').replace(key_duoshao, '')
		
		if (i<2 or feedbackDataReplaced.find(key_walk) >= 0 or feedbackDataReplaced.find(key_run) >= 0):
			if i<2:
				for j,coldata in enumerate(rowdata):
					wtable.write(num, j, coldata, style0)
					wtable_buzhun.write(num_buzhun, j, coldata, style0)
					wtable_others.write(num_other, j, coldata, style0)
				if i == 1:
					wtable_buzhun.write(num_buzhun, ncols, key_class, style0)
				num_buzhun += 1
				num_other += 1
			elif feedbackDataReplaced.find(key_more) >= 0 or feedbackDataReplaced.find(key_less) >= 0 \
			or feedbackDataReplaced.find(key_cha) >= 0 or feedbackDataReplaced.find(key_buzhun) >= 0 \
			or feedbackDataReplaced.find(key_fast) >= 0 or feedbackDataReplaced.find(key_slow) >= 0:
				for j,coldata in enumerate(rowdata):
					wtable.write(num, j, coldata, style2)
					wtable_buzhun.write(num_buzhun, j, coldata, style1)
				
				if feedbackDataReplaced.find(key_less) >= 0 or feedbackDataReplaced.find(key_cha) >= 0:
					wtable_buzhun.write(num_buzhun, ncols, key_less, style2)
				elif feedbackDataReplaced.find(key_buzhun) >= 0:
					wtable_buzhun.write(num_buzhun, ncols, key_buzhun, style2)
				elif feedbackDataReplaced.find(key_record) >= 0:
					wtable_buzhun.write(num_buzhun, ncols, key_record)
				else:
					wtable_buzhun.write(num_buzhun, ncols, key_other)
				
				num_buzhun += 1
			else:
				for j,coldata in enumerate(rowdata):
					wtable.write(num, j, coldata, style1)
					wtable_others.write(num_other, j, coldata, style1)
				num_other += 1
			num += 1
				
	try:
		wbook.save(outfile)
	except Exception,e:
		print str(e)
	
	print 'rows: ', nrows
	print 'cols: ', ncols
	print 'Found %d about steps' %(num-2)
	
if __name__=='__main__':
	#pyExcel()
	pyExcel(unicode(sys.argv[1], "gbk"), sys.argv[2])



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值