功能性的文章直接用几个最简单的实现表达:
xlsxwriter库的核心就是其Workbook对象。
创建一个指定名字的xlsx文件:
import xlsxwriter 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并且为其添加一些数据:
import xlsxwriter 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 for item, cost in expenses: 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的对象上加。
import xlsxwriter 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 for item, cost in expenses: worksheet.write(row, col, item, bold) worksheet.write(row, col+1, cost) row += 1 test_book.close()
关于更多的参数,完全可以参看源代码里面的property字典下面初始化的那一堆东西,应该都是。
根绝着就能解决大部分问题了,如果有更多的需求就查阅下面的文档即可。
通用做法可能会基于此再做一些东西来包装 xlsxwriter 来让他更好用,这个就看大家对自己业务需要抽象的能力了。
Reference:
https://xlsxwriter.readthedocs.io xlsxwriter doc
在当前文件夹生成
#coding=utf-8 def get_excel(): """ 生成excel :return: """ import xlsxwriter 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' if province or city or county: area_name = province + city + county conditions_list.append(workbook.add_format(formats.bold)) conditions_list.append(u'地区:') conditions_list.append(u'%s ' % area_name) if name: conditions_list.append(workbook.add_format(formats.bold)) conditions_list.append(u'姓名:') conditions_list.append(u'%s ' % name) if phone: conditions_list.append(workbook.add_format(formats.bold)) conditions_list.append(u'手机:') conditions_list.append(u'%s ' % phone) if date: 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)) if conditions_list: # 如果有条件 worksheet.write_rich_string('A1', *conditions_list) # 首行 # 表格首行 cols = ["姓名", "电话", "地区"] for col_index, col in enumerate(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": "台湾省"}] # 表格其余行 for row_index, u in enumerate(data_list, start=2): # 因为前两行都被占用了,所以从第三行第一列开始 # 斑马条 if row_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/dd hh: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() def dict_merge(*args): """ 功能说明:合并字典 """ all = {} for arg in args: if not isinstance(arg, dict): continue all.update(arg) return all class Struct(dict): """ - 为字典加上点语法. 例如: > o = Struct({'a':1}) > o.a > 1 > o.b > None """ def __init__(self, dictobj={}): self.update(dictobj) def __getattr__(self, name): # 如果有则返回值,没有则返回None if name.startswith('__'): raise AttributeError return self.get(name) def __setattr__(self, name, val): self[name] = val def __hash__(self): return id(self) if __name__ == '__main__': get_excel()
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“使用python库xlsxwriter库来输出各种xlsx文件的示例”评论...
更新日志
2024年11月08日
2024年11月08日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]