您的位置:首页 > 编程语言 > Python开发

python模块:xlsxwriter和xlrd相结合读取、写入excel文件

2015-04-13 13:39 561 查看
python模块简单说明:

xlsxwriter:负责写入数据

xlrd:负责读取数据



xlsxwriter 官方文档:http://xlsxwriter.readthedocs.org



本实例是刚写出来的,目前比较粗糙。

写这实例主要是结合平时工作内容,把手动操作改成自动化。

平时线上更新游戏版本号后,需要把版本号记录到一个excel文件中,每次更新都要修改,比较蛋疼,虽然版本号在数据库中也有存在,但还是要往excel记录一份。

这些代码目前只是测试代码,从原excel中读取所有内容,然后修改,再重成新的excel(其实我代码中并没有修改,只是把内容读出来,再写回去,唯一的就是做了些表格属性设定吧,其实我放到运维工具上后,就会结合平台,及数据库,去修改要修改的数据)。

#coding=utf-8

#/usr/bin/env python

import xlsxwriter,xlrd

import sys,os.path

fname = 'zm6.xlsx'

if not os.path.isfile(fname):

print u'文件路径不存在'

sys.exit()

data = xlrd.open_workbook(fname) # 打开fname文件

data.sheet_names() # 获取xls文件中所有sheet的名称

table = data.sheet_by_index(0) # 通过索引获取xls文件第0个sheet

nrows = table.nrows # 获取table工作表总行数

ncols = table.ncols # 获取table工作表总列数

workbook = xlsxwriter.Workbook('zm6.xlsx') #创建一个excel文件

worksheet = workbook.add_worksheet() #创建一个工作表对象

worksheet.set_column(0,ncols,22) #设定列的宽度为22像素

#border:边框,align:对齐方式,bg_color:背景颜色,font_size:字体大小,bold:字体加粗

top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True})

green = workbook.add_format({'border':1,'align':'center','bg_color':'green','font_size':12})

yellow = workbook.add_format({'border':1,'bg_color':'yellow','font_size':12})

red = workbook.add_format({'border':1,'align':'center','bg_color':'red','font_size':12})

blank = workbook.add_format({'border':1})

for i in xrange(nrows):

worksheet.set_row(i,22) #设定第i行单元格属性,高度为22像素,行索引从0开始

for j in xrange(ncols):

cell_value = table.cell_value(i,j,) #获取第i行中第j列的值

if i == 0:

format = top

elif i == 3 or i == 6:

format = blank

else:

if j == 0 or j == 2:

format = yellow

elif j == 1:

format = red

elif j == 3:

format = green

green.set_num_format('yyyy-mm-dd') #设置时间格式

worksheet.write(i,j,cell_value,format) #把获取到的值写入文件对应的行列

format.set_align('vcenter') #设置单元格垂直对齐

workbook.close()

看完代码,再来看我修改之前,即原始的excel文件内容:





python xlsxwriter修改之前



读取内容后,新生成的excel文件内容:





python xlsxwriter修改之后



这些代码格式属性,是因为我特意根据原来的文件格式制定的,所以在代码中,能看到好几个if语句。

正因为这样,看到的前后图对比,很相像。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: