美文网首页
python工具箱之excel处理

python工具箱之excel处理

作者: python取经小分队 | 来源:发表于2017-11-02 15:50 被阅读36次
    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,还支持其他很多格式:

    • 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)
    

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

    相关文章

      网友评论

          本文标题:python工具箱之excel处理

          本文链接:https://www.haomeiwen.com/subject/xgoopxtx.html