功能性的文章直接用几个最简单的实现表达:
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()
到此这篇关于使用python库xlsxwriter库来输出各种xlsx文件的示例的文章就介绍到这了,更多相关python xlsxwriter输出xlsx内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍python xlsxwriter库生成图表的应用示例,包括了python xlsxwriter库生成图表的应用示例的使用技巧和注意事项,需要的朋友参考一下 xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外 还可以加上很形象的各种图,比如柱状图、饼图、折线图等。 xlsxwriter 基本用法,创建 xlsx
问题内容: 我想使用python的Pandas库读取.xlsx文件,并将数据移植到postgreSQL表中。 到目前为止,我所能做的就是: 现在,我知道该步骤已成功执行,但是我想知道如何解析已读取的excel文件,以便可以了解excel中的数据如何映射到变量数据中的数据。 我没弄错,数据就是Dataframe对象。因此,我如何解析此dataframe对象以逐行提取每一行。 问题答案: 我通常会为每
本文向大家介绍python psutil库的使用示例,包括了python psutil库的使用示例的使用技巧和注意事项,需要的朋友参考一下 由于Bash实在太恶心,很多运维工程师开始使用Python代替Bash写各种脚本。 虽然理论上可以用Python调用Bash指令实现各种功能,但是给各种命令写Bash wrapper还要解析输出实在太麻烦。所以我们还是希望用原生Python库来实现各种功能。
本文向大家介绍对python中的xlsxwriter库简单分析,包括了对python中的xlsxwriter库简单分析的使用技巧和注意事项,需要的朋友参考一下 一、xlsxwriter 基本用法,创建 xlsx 文件并添加数据 官方文档:http://xlsxwriter.readthedocs.org/ xlsxwriter 可以操作 xls 格式文件 注意:xlsxwriter 只能创建新文件
问题内容: 我知道我可以使用Java安装Jython,并且可以在使用Python的地方使用Jython。Jython外壳运行良好。 在Jython中,我该如何安装类似的库而该库通常是通过或安装的 问题答案: 某些Python模块(如)在C中具有必需的组件。它们在Jython中不起作用。 大多数Python软件包都可以正常运行,你可以使用与CPython相同的工具来安装它们。在Jython Book
我正在为一个研究项目处理数据。输出以. csv文件的形式,这些文件已转换为. xlsx文件。每个参与者都有一个单独的输出文件,每个文件包含关于几十个(或更多)刺激的大约40个不同测量的数据。为了对收集到的数据有任何意义,我们需要用相关的测量来分别观察每个刺激。每个输出文件都很大(50列乘60000行)。我希望使用openpyxl解析数据库,以搜索具有特定字符串值的预定指定列中的单元格。找到这样的单