功能性的文章直接用几个最简单的实现表达:
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
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章