关于python读取和写入excel

今天财务同事要求帮忙解决一点问题,将一个300000行数据的excel按照每50000拆分成一个表,估计以后也经常需要,顺便帮忙处理了一下

import xlrd
import xlwt
def python_excel(read_url, save_url, limit):
    """
    :param read_url: 需要处理的excel本地地址
    :param save_url: 处理完成之后保存的地址
    :param limit: 拆分之后每一个表的数据行数
    如21000条数据,按照每limit=4000拆分,得到6个表,其中第6个表只有1000条数据
    :return:
    """
    data = xlrd.open_workbook(read_url)
    table = data.sheets()[0]
    nrows = table.nrows
    ncols = table.ncols
    sheets = int(nrows / limit) + 1  # 4
    workbook = xlwt.Workbook(encoding='ascii')
    for i in range(0, sheets):  # 循环一个文件里面的每个表单
        worksheet = workbook.add_sheet(str(i) + "_res")  # 给表单命名
        if i == sheets - 1:  # i==3
            n = nrows - i * limit
        else:
            n = limit
        for row in range(0, n):
            row_content = table.row_values(row + i * limit)  # 获取某一行数据
            for col in range(0, ncols):  # 遍历每行的每一列元素
                worksheet.write(row, col, row_content[col])
                workbook.save(save_url)
        print("已保存{}个表".format(i + 1))
    print("全部处理完毕")

if __name__ == '__main__':
    read = 'C:\\Users\\alex\\Desktop\\api_test.xls'
    save = 'C:\\Users\\alex\\Desktop\\api_test01.xls'
    python_excel(read, save, 30)
C:\Python37\python.exe D:/20210522/meet/excel.py
已保存1个表
已保存2个表
已保存3个表
已保存4个表
全部处理完毕

少量数据测试没问题,可以满足财务同事经常拆分表数据的需求,但是也有一个致命的弱点,就是速度太慢,如果数据量过大的话,建议采用多线程

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容