使用python库xlsxwriter库来输出各种xlsx文件的示例
功能性的文章直接用几个最简单的实现表达:
xlsxwriter库的核心就是其Workbook对象。
创建一个指定名字的xlsx文件:
importxlsxwriter filename='/Users/piperck/Desktop/axiba.xlsx' test_book=xlsxwriter.Workbook(filename) worksheet=test_book.add_worksheet() test_book.close()
创建一个Workbook的实例对象。可以传入一个文件名字,如果不想生成的文件在当前路径下面,可以在文件名字前面带上绝对路径。
add_worksheet()就是增加一个sheet
然后关闭这个对象,完成xlsx文件的生成。
创建一个指定名字的sheet并且为其添加一些数据:
importxlsxwriter
filename='/Users/piperck/Desktop/axiba.xlsx'
test_book=xlsxwriter.Workbook(filename)
worksheet=test_book.add_worksheet('what')
expenses=(
['Rent',1000],
['Gas',100],
['Food',300],
['Gym',50],
)
#定义起始的行列会在这个基础上行列各加一作为初始行列
row=0
col=0
foritem,costinexpenses:
worksheet.write(row,col,item)
worksheet.write(row,col+1,cost)
row+=1
worksheet.write(row,col,'=sum(B0:B4)')
test_book.close()
我们可以使用得到的worksheet对象来添加其行列数据,如上所示。注意最后添加数据可以直接在第三个参数里面使用函数。
创建一个有指定样式的Workbook:
这个方法其实。。应该有非常多的参数,大家根据实际需要可以具体去查询更多的属性。这个样式要在Workbook的对象上加。
importxlsxwriter
filename='/Users/piperck/Desktop/axiba.xlsx'
test_book=xlsxwriter.Workbook(filename)
worksheet=test_book.add_worksheet('what')
bold=test_book.add_format({'bold':True})
test_book.add_format()
expenses=(
['Rent',1000],
['Gas',100],
['Food',300],
['Gym',50],
)
#定义起始的行列会在这个基础上行列各加一作为初始行列
row=0
col=0
foritem,costinexpenses:
worksheet.write(row,col,item,bold)
worksheet.write(row,col+1,cost)
row+=1
test_book.close()
关于更多的参数,完全可以参看源代码里面的property字典下面初始化的那一堆东西,应该都是。
根绝着就能解决大部分问题了,如果有更多的需求就查阅下面的文档即可。
通用做法可能会基于此再做一些东西来包装xlsxwriter来让他更好用,这个就看大家对自己业务需要抽象的能力了。
Reference:
https://xlsxwriter.readthedocs.io xlsxwriterdoc
在当前文件夹生成
#coding=utf-8
defget_excel():
"""
生成excel
:return:
"""
importxlsxwriter
workbook=xlsxwriter.Workbook("test.xlsx")
worksheet=workbook.add_worksheet()
#样式
formats=Struct()#字典转化为点语法
formats.base={"font_name":u"宋体","font_size":11,"align":"center","valign":"vcenter","text_wrap":True}
#formats.condition=dict_merge(formats.base,{"align":"left"})
formats.bold={"bold":True}#加粗
formats.row=dict_merge(formats.base,{"border":1})
formats.first_row=dict_merge(formats.row,{"bold":True})#首行
formats.more_row=dict_merge(formats.row,{})#普通行
formats.more_row_even=dict_merge(formats.row,{"bg_color":"#dddddd"})#普通行-奇数
#筛选条件行
worksheet.merge_range('A1:F1',"")#合并单元格
conditions_list=[]#条件
province='省'
city='市'
county='地区'
name='姓名'
phone='电话'
date='2018-6'
ifprovinceorcityorcounty:
area_name=province+city+county
conditions_list.append(workbook.add_format(formats.bold))
conditions_list.append(u'地区:')
conditions_list.append(u'%s'%area_name)
ifname:
conditions_list.append(workbook.add_format(formats.bold))
conditions_list.append(u'姓名:')
conditions_list.append(u'%s'%name)
ifphone:
conditions_list.append(workbook.add_format(formats.bold))
conditions_list.append(u'手机:')
conditions_list.append(u'%s'%phone)
ifdate:
year,month=date[0:4],date[5:7]
conditions_list.append(workbook.add_format(formats.bold))
conditions_list.append(u'创建时间:')
conditions_list.append(u'%s/%s'%(year,month))
ifconditions_list:#如果有条件
worksheet.write_rich_string('A1',*conditions_list)#首行
#表格首行
cols=["姓名","电话","地区"]
forcol_index,colinenumerate(cols):
worksheet.write(1,col_index,col,workbook.add_format(formats.first_row))#第二行,col_index列,col_index从0开始,也就是第一列开始
data_list=[{"name":"Spencer","tel":"13888888888","reg":"中国"},{"name":"Jeff","tel":"139999999999","reg":"台湾省"}]
#表格其余行
forrow_index,uinenumerate(data_list,start=2):#因为前两行都被占用了,所以从第三行第一列开始
#斑马条
ifrow_index%2!=0:
row_format=formats.more_row#excel格式普通行
else:
row_format=dict_merge(formats.more_row_even)#excel格式奇数行
#日期格式
date_format=dict_merge(row_format,{"num_format":"yyyy/mm/ddhh:mm"})
#靠左
left_format=dict_merge(row_format,{"align":"left"})
#第一个参数:行,第二个参数:列,第三个参数:数据,第四个参数:属性
worksheet.write(row_index,0,u['name'],workbook.add_format(row_format))
worksheet.write(row_index,1,u['tel'],workbook.add_format(row_format))
worksheet.write(row_index,2,u['reg'],workbook.add_format(row_format))
#列宽
#第一个参数是第几列开始,第二个人参数是从第几列结束
#比如下方第一个就是设置第一列为20,第二个就是设置第二列为10,第三个就是设置3到6列为20
worksheet.set_column(0,0,20)
worksheet.set_column(1,1,10)
worksheet.set_column(2,5,20)
workbook.close()
defdict_merge(*args):
"""
功能说明:合并字典
"""
all={}
forarginargs:
ifnotisinstance(arg,dict):
continue
all.update(arg)
returnall
classStruct(dict):
"""
-为字典加上点语法.例如:
>>>o=Struct({'a':1})
>>>o.a
>>>1
>>>o.b
>>>None
"""
def__init__(self,dictobj={}):
self.update(dictobj)
def__getattr__(self,name):
#如果有则返回值,没有则返回None
ifname.startswith('__'):
raiseAttributeError
returnself.get(name)
def__setattr__(self,name,val):
self[name]=val
def__hash__(self):
returnid(self)
if__name__=='__main__':
get_excel()
到此这篇关于使用python库xlsxwriter库来输出各种xlsx文件的示例的文章就介绍到这了,更多相关pythonxlsxwriter输出xlsx内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。