python拆分excel文件

当我们遇到一些很大的文件时,如果把所有的数据全部加入到内存当中处理,当文件比较小时还好,但是问价你很大时,这种方式是很不好的,当超过十几个G的文件时,我们该如何处理呢?

python可以很好的处理这个问题,可以把大文件给一个个拆分成小文件,然后我们再一次去处理小文件即可,本篇博客小主就写一个简单拆分excel方法供大家参考

这里我随便找了一个文件,里面有26行数据,我们把每10行数据拆分成一个excel文件,并且在每个文件中都有表头

要拆分文件我们需要两个模块,即:xlrd和xlwt,大家自行下载

下面开始上代码:

#!/usr/bin/env python3
# encoding:utf-8
'''
@author: lierl
@file: do_split_excel.py
@time: 2018/4/13 17:28
'''
__author__ = 'lierl'

import xlrd
import xlwt

limit = 10
readbook = "E:\\aaa.xlsx" #原始文件路径
savebook = "e:\\files" #要保存的目录
data = xlrd.open_workbook(readbook)
# 获取sheet
table = data.sheets()[0]#获取第一个sheet的所有数据

# 行数
nrows = table.nrows
# 列数
ncols = table.ncols

sheets = nrows / limit#总共需要多少excel

if not sheets.is_integer():#如果不是整除则需要+1
    sheets = sheets + 1

title_row = table.row_values(0)#获取首行的标题
#
for i in range(0, int(sheets)):
    workbook = xlwt.Workbook(encoding='ascii')
    worksheet = workbook.add_sheet(sheetname="0")#设置sheet名称
    for col in range(0,ncols):#写首行的标题
        worksheet.write(0, col, title_row[col])
    for row in range(1, limit+1):#每次循环limit        newRow = row+limit*i
        if newRow < nrows:
            row_content = table.row_values(newRow)
            for col in range(0, ncols):
                worksheet.write(row, col, row_content[col])
    workbook.save(savebook+"\\"+str(i)+".xlsx")

运行代码之后:

生成了三个文件

前两个文件中每个里面都有十条数据,第三个里面有6条数据,大家可以亲手运行一下


努力成就非凡,请不要再最该奋斗的年纪选择安逸

你可能感兴趣的:(python,python,excel,拆分)