python工具箱之excel处理

2017-11-02  本文已影响36人  python取经小分队
image.png

平时在统计一些数据时候,经常会有将数据写到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,还支持其他很多格式:

相同的代码,只是在最后写入时进行不同格式显示, 是不是很方便呢,看个例子:

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)

看到了吗, 通过不同的后缀输出不同格式的文件.

上一篇下一篇

猜你喜欢

热点阅读