基于Python的Tablib库做数据的表格存储

一、声明和解释

  • 本文借鉴于知乎id bugfeng的基础上进行了整理,若侵权及删
  • 本文基于两个库进行数据的生成以及存储(xlsx格式,其他格式还在研究中).
  • 本文以函数的形式进行开发,目前只对元组列表进行的处理(其他数据类型还在学习中)且可能还存在一些bug,如有发现可指正.
  • 最后结果的数据为模拟数据,并非个人真是数据。
  • 本文只用作于笔记的存储,无其他意义.

二、正文

引用库

import tablib
from faker import Faker

生产模拟数据

# creatData 创建数据(模拟)
def creatData(number):
    arrinfo = []
    for i in range(1, number + 1):
        arr = []
        arr.append(fk.name())  # 名字 1
        arr.append(fk.province())  # 省份 2
        arr.append(fk.ssn())  # 身份证 3
        arr.append(fk.job())  # 职位 4
        arr.append(fk.company())  # 公司 5
        arr.append(fk.phone_number())  # 手机号 6
        arr.append(fk.email())  # 邮箱 7
        arr.append(fk.ipv4())  # ip 8
        tuple1 = tuple(arr)
        arrinfo.append(tuple1)
    return arrinfo

形成数据集

# data
"""
dataTable 数据集名称
header 表头 list
data 数据 list tup
"""
def prodData(header=None,setData=None):
    # 判断传递的参数是否为空
    print("1 判断传递的参数是否为空")
    if header is None:
        print("请传递数据表头")
        return 0
    if setData is None:
        print("请传递数据")
        return 0

    # 创建数据集
    print("2 创建数据集")
    dataTable = tablib.Dataset()
    # 表头
    print("3 创建表头")
    dataTable.headers = header
    # 写入数据 判断数据传入的类型  分为元组和列表的形成写入
    print("4 判断数据传入的类型")
    print("传递的数据类型为:{}".format(type(setData)))
    if type(setData) == list:
        for i in setData:
            dataTable.append(i)
    elif type(setData) == tuple:
        dataTable.append(setData)
    else:
        print("请传递正确的数据类型,可传递list和tuple")
    return dataTable

导出

# export 默认为xlsx
def exportData(filepath=None,data=None):
    with open(filepath,'wb') as f:
        f.write(data.export('xlsx'))

main

# main
if __name__ == '__main__':
    header  = ["姓名","省份","身份证","职位","公司","手机号","邮箱","IP地址"]  #设置表头
    number = 999  # 创建条数
    data = creatData(number)  # 调用生成数据
    print(data)
    dataTable = prodData(header, data)  # 创建数据集
    exportData("../file/个人信息.xlsx",dataTable)  # 导出

整体代码

# -*- coding:utf-8 -*-
# Author:rzhao
# DataTime:2022/11/5 20:40
# File:数据的导出案例
import tablib
from faker import Faker
fk = Faker(locale='zh_CN')
# creatData 创建数据(模拟)
def creatData(number):
    arrinfo = []
    for i in range(1, number + 1):
        arr = []
        arr.append(fk.name())  # 名字 1
        arr.append(fk.province())  # 省份 2
        arr.append(fk.ssn())  # 身份证 3
        arr.append(fk.job())  # 职位 4
        arr.append(fk.company())  # 公司 5
        arr.append(fk.phone_number())  # 手机号 6
        arr.append(fk.email())  # 邮箱 7
        arr.append(fk.ipv4())  # ip 8
        tuple1 = tuple(arr)
        arrinfo.append(tuple1)
    return arrinfo


# data
"""
dataTable 数据集名称
header 表头 list
data 数据 list tup
"""
def prodData(header=None,setData=None):
    # 判断传递的参数是否为空
    print("1 判断传递的参数是否为空")
    if header is None:
        print("请传递数据表头")
        return 0
    if setData is None:
        print("请传递数据")
        return 0

    # 创建数据集
    print("2 创建数据集")
    dataTable = tablib.Dataset()
    # 表头
    print("3 创建表头")
    dataTable.headers = header
    # 写入数据 判断数据传入的类型  分为元组和列表的形成写入
    print("4 判断数据传入的类型")
    print("传递的数据类型为:{}".format(type(setData)))
    if type(setData) == list:
        for i in setData:
            dataTable.append(i)
    elif type(setData) == tuple:
        dataTable.append(setData)
    else:
        print("请传递正确的数据类型,可传递list和tuple")
    return dataTable


# export 默认为xlsx
def exportData(filepath=None,data=None):
    with open(filepath,'wb') as f:
        f.write(data.export('xlsx'))

# main
if __name__ == '__main__':
    header  = ["姓名","省份","身份证","职位","公司","手机号","邮箱","IP地址"]  #设置表头
    number = 999  # 创建条数
    data = creatData(number)  # 调用生成数据
    print(data)
    dataTable = prodData(header, data)  # 创建数据集
    exportData("../file/个人信息.xlsx",dataTable)  # 导出

三、结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值