excel处理

excel处理有很多库(pyecel、xlwt / xlrd 、tablib等),下面整理一下tablib操作excel.

安装


In [5]:
!pip install tablib


Requirement already satisfied: tablib in c:\users\administrator\appdata\local\programs\python\python36-32\lib\site-packages

单sheet写


In [18]:
import tablib

data = tablib.Dataset(headers=[u'LOL选手', u'位置', u'KDA'], title=u"LOL主播信息")
data.append((u'Dopa', u'中单', 9.9))
data.append_separator(u'--------------分割线----------------')
data.append((u'炸姐', u'ADC', 8.8))

with open("excel/single_sheet.xls", "wb") as f:
    f.write(data.xls)

单sheet读取


In [19]:
import tablib

data = tablib.Dataset().load(open('excel/single_sheet.xls', "rb").read(), "xls")
print (data.headers)  # 表头,也就是第一行
print (data[u'KDA'])  # KDA这一列数据
for row in data:  # 遍历除头以外的行
    print(row)


['LOL选手', '位置', 'KDA']
[9.9, '', 8.8]
('Dopa', '中单', 9.9)
('--------------分割线----------------', '', '')
('炸姐', 'ADC', 8.8)

多sheet写


In [20]:
import tablib

data1 = tablib.Dataset(headers=[u'主播', u'擅长英雄', u'KDA'], title=u"虎牙主播信息")
data1.append((u'Dopa', u'卡萨丁', 666))
data1.append_separator(u'--------------分割线----------------')
data1.append((u'骚男', u'男刀', 555))

data2 = tablib.Dataset(headers=[u'主播', u'擅长英雄', u'KDA'], title=u"斗鱼主播信息")
data2.append((u'55开', u'卡牌',333))
data2.append_separator(u'--------------分割线----------------')
data2.append((u'小智', u'剑圣',111))

book = tablib.Databook((data1, data2))
with open("excel/multi_sheet.xls", "wb") as f:
    f.write(book.xls)

多sheet读取


In [28]:
import tablib

datas = tablib.Databook().load("xls", open('excel/multi_sheet.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)


2
['主播', '擅长英雄', 'KDA']
['55开', '--------------分割线----------------', '小智']
('55开', '卡牌', 333.0)
('--------------分割线----------------', '', '')
('小智', '剑圣', 111.0)

注意

xls格式遇到数据多的话会报错,好像是六万多.可以换成保存为xlsx格式.