tablib实现数据导出excel等多种格式

tablib可以简洁优雅地将数据导出为excel、json、csv、yaml等格式。

以前经常需要将数据导出保存到excel、json、csv、yaml等,需要安装xlwt、pyyaml等第三方模块。需要根据不同模块提供的方法,自己编写代码来实现。当然自己定制需求不高的情况下,可以了解一下tablib这个模块。

相较于重量级的pandas,tablib则轻巧很多,不需要安装那么多依赖包。

安装

pip install tablib

创建数据集

talib.dataset

import tablib

#表头
headers = ('id', 'name', 'age', 'grade')

#数据
data = [
    ['1', 'wanwei', '12', '001'],
    ['2', 'wanwei1', '12', '001'],
    ['3', 'wanwei1', '12', '001'],
    ['4', 'wanwei1', '12', '001']
]

#创建数据集
dataset_o = tablib.Dataset(*data, headers=headers)
print(dataset_o)

输出结果为:

id|name   |age|grade
--|-------|---|-----
1 |wanwei |12 |001  
2 |wanwei1|12 |001  
3 |wanwei1|12 |001  
4 |wanwei1|12 |001 

tablib.dataset.load
json

with open('test.json', encoding='utf-8') as f:
    import_json = tablib.Dataset().load(in_stream=f)
    print(import_json)
    print(import_json.json)

输出结果为:

id,name,age,grade
1,wanwei,12,001
2,wanwei1,12,001
3,wanwei1,12,001
4,wanwei1,12,001

id|name   |age|grade
--|-------|---|-----
1 |wanwei |12 |001  
2 |wanwei1|12 |001  
3 |wanwei1|12 |001  
4 |wanwei1|12 |001  
[{"id": "1", "name": "wanwei", "age": "12", "grade": "001"}, {"id": "2", "name": "wanwei1", "age": "12", "grade": "001"}, {"id": "3", "name": "wanwei1", "age": "12", "grade": "001"}, {"id": "4", "name": "wanwei1", "age": "12", "grade": "001"}]

excel

with open('test.xlsx', encoding='utf-8') as f:
    import_xlsx = tablib.Dataset().load(in_stream=f)
    print(import_xlsx )
    print(import_xlsx.xlsx)

从上可以看出,tablib可以自动检测文件类型,并使用适当的格式化方法来实现导入,方便快捷,无需针对不同格式文件开发不同代码。

数据格式转换

支持将数据集转换为一下任意一种数据格式

  • excel
  • json
  • csv
  • yaml
  • pandas dataframes
  • html
  • jira
  • tsv
  • ods
  • dbf
  • dict
with open('test.json', encoding='utf-8') as f:
    import_json = tablib.Dataset().load(in_stream=f)
    print(import_json)
    #json
    print(import_json.json)
    #csv
    print(import_json.csv)
    #yaml
    print(import_json.yaml)
    #excel
    print(import_json.excel)

数据导出

导出单页excel数据

import tablib

#表头
headers = ('id', 'name', 'age', 'grade')

#数据
data = [
    ['1', 'wanwei', '12', '001'],
    ['2', 'wanwei1', '12', '001'],
    ['3', 'wanwei1', '12', '001'],
    ['4', 'wanwei1', '12', '001']
]

#创建数据集
dataset_o = tablib.Dataset(*data, headers=headers)

#设置标签
dataset_o.title='dataset_o'
with  open('test.xlsx', 'wb') as f:
    f.write(dataset_o.export('xlsx'))

导出多页excel数据

import tablib

#表头
headers = ('id', 'name', 'age', 'grade')

#数据
data_o = [
    ['1', 'wanwei', '12', '001'],
    ['2', 'wanwei1', '12', '001']
]

data_t = [
    ['3', 'wanwei1', '12', '001'],
    ['4', 'wanwei1', '12', '001']
]

#创建数据集
dataset_o = tablib.Dataset(*data_o, headers=headers)
dataset_t = tablib.Dataset(*data_t, headers=headers)

#设置标签
dataset_o.title='dataset_o'
dataset_t.title='dataset_t'

databook = tablib.Databook((dataset_t, dataset_o))

with open('test.xlsx', 'wb') as f:
    f.write(databook.export('xlsx'))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值