平时在统计一些数据时候,经常会有将数据写到excel里的需求. 下面来介绍一个python库tablib可以很容易实现
excel
读写以及多sheet
操作.
单Sheet读写
写操作
# -*- coding: utf-8 -*-
import tablib
data = tablib.Dataset(headers=[u'姓名', u'籍贯', u'年龄'], title=u"个人信息")
data.append((u'刘德华', u'中国', 50))
data.append_separator(u'--------------分割线----------------')
data.append((u'金智贤', u'韩国', 30))
with open("data.xls", "wb") as f:
f.write(data.xls)
生成的文件打开如下:
image.png读操作
# -*- coding: utf-8 -*-
import tablib
data = tablib.Dataset().load(open('data.xls', "rb").read(), "xls")
print(data.headers) # 表头,也就是第一行
print(data[u'年龄']) # 年龄这一列数据
for row in data: # 遍历除头以外的行
print(row)
多Sheet读写
写操作
import tablib
data1 = tablib.Dataset(headers=[u'姓名', u'籍贯', u'年龄'], title=u"个人信息")
data1.append((u'刘德华', u'中国', 50))
data1.append_separator(u'--------------分割线----------------')
data1.append((u'金智贤', u'韩国', 30))
data2 = tablib.Dataset(headers=[u'歌手', u'歌曲'], title=u"歌星信息")
data2.append((u'许嵩', u'断桥残雪'))
data2.append_separator(u'--------------分割线----------------')
data2.append((u'周杰伦', u'公公偏头痛'))
book = tablib.Databook((data1, data2))
with open("data.xls", "wb") as f:
f.write(book.xls)
结果如图:
image.png
读操作
# -*- coding: utf-8 -*-
import tablib
datas = tablib.Databook().load("xls", open('data.xls', "rb").read())
print(len(datas.sheets())) # sheet个数
data = datas.sheets()[1] # 选取第二个sheet
print(data.headers) # 表头,也就是第一行
print(data[u'歌曲']) # 年龄这一列数据
for row in data: # 遍历除头以外的行
print(row)
结束语
tablib不仅支持excel
,还支持其他很多格式:
- Excel (Sets + Books)
- JSON (Sets + Books)
- YAML (Sets + Books)
- Pandas DataFrames (Sets)
- HTML (Sets)
- TSV (Sets)
- OSD (Sets)
- CSV (Sets)
- DBF (Sets)
相同的代码,只是在最后写入时进行不同格式显示, 是不是很方便呢,看个例子:
import tablib
data = tablib.Dataset(headers=['location', 'name', 'kda'], title="SKT")
data.append(('topsolo', 'huni', 6))
data.append(('midsolo', 'faker', 8))
data.append(('adc', 'bang', 9))
data.append(('support', 'wolf', 7))
data.append(('jungle', 'blank', 6))
print(data.json)
看到了吗, 通过不同的后缀输出不同格式的文件.
网友评论