python xlsxwriter dict_使用python库xlsxwriter库来输出各种xlsx文件的示例

fe842ae41263b93833740371aac75ba6.png

功能性的文章直接用几个最简单的实现表达:

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内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

原文链接:https://www.cnblogs.com/piperck/p/6363256.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值