功能性的文章直接用几个最简单的实现表达:
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()
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 孙悦2024-时光音乐会[金蜂][WAV+CUE]
- 秦宇子.2020-#YUZI【海蝶】【FLAC分轨】
- 苏有朋.1994-这般发生【华纳】【WAV+CUE】
- 小虎队.1990-红蜻蜓【飞碟】【WAV+CUE】
- 雷婷《寂寞烟火HQⅡ》头版限量[低速原抓WAV+CUE][1G]
- 赵传1996《黑暗英雄》台湾首版[WAV+CUE][1G]
- 张敬轩2005《我的梦想我的路》几何娱乐[WAV+CUE][1G]
- 群星《人到四十男儿情(SRS+WIZOR)》[原抓WAV+CUE]
- 马久越《上善若水HQCDII》[低速原抓WAV+CUE]
- 龚玥《女儿情思》6N纯银SQCD【WAV+CUE】
- 张惠妹《你在看我吗》大碟15 金牌大风[WAV+CUE][1G]
- 群星《左耳·听见爱情》星文唱片[WAV+CUE][1G]
- 群星《抖音嗨疯-DISCO英文版》[WAV+CUE][1G]
- 群星.1990-情义无价(TP版)【中唱】【WAV+CUE】
- 马兆骏.1990-心情·七月【滚石】【WAV+CUE】