小猿圈分享-使用python把Excel表格由一个分隔成多个

我们经常会遇到这样的情况,一次性两万条记录的导入勉强可以,数据量再大就超时了。而有些产品的价格表格在5万以上,此时导入的时候就需要拆分成几个数据量少于2万的表格。每个类型码有多个Excel表,靠手工来操作不是程序员该干的事情,于是今天小猿圈就教大家用python来解决。

代码如下,希望给新手一个帮助。

Excel表格放在同目录下的file目录,并新建一个new文件夹存放拆分后的Excel表格。字段是写死了两行的,实际使用需要修改。

# -*- coding: utf-8 -*-

import os

import math

import xlrd

import xlwt

dir = os.getcwd()+'\\file\\'

def get_file_list(file_dir): 

for root,dirs,files in os.walk(file_dir): 

return files

def split_xls(name): 

limit = 10000

print(name)

limit = int(limit)

data = xlrd.open_workbook(dir+name)

# 获取sheet

table = data.sheets()[0]

# 行数

nrows = table.nrows

print('总行数{}'.format(nrows))

# 列数

ncols = table.ncols

sheets = math.ceil(nrows / limit)

print('拆分文件数量:{}'.format(sheets))

workbook = xlwt.Workbook(encoding='ascii')

for i in range(int(sheets)):

if i == 0:

start_row = 0

else:

start_row = i*limit

if i == sheets-1:

end_row = nrows

else:

end_row = (i+1)*limit

#print(start_row)

#print(end_row)

new_arr = []

new_arr.append(['型号','未含税价'])

for row in range(start_row,end_row):

if i == 0 and row == 0:

continue

sku = table.cell_value(row,0)

price = table.cell_value(row,1)

new_arr.append([sku,price])

#print(new_arr) 

new_workbook = xlwt.Workbook()

new_worksheet = new_workbook.add_sheet('Sheet1',cell_overwrite_ok=True) 

for new_row in range(0,len(new_arr)):

new_worksheet.write(new_row,0,new_arr[new_row][0]) 

new_worksheet.write(new_row,1,new_arr[new_row][1])

old_name = name.split('.')

new_name = old_name[0]+'-'+str(i)+'.xls'

new_workbook.save(os.getcwd()+'\\new\\'+new_name)

print('************************************')

if __name__ == '__main__':

file_list = get_file_list(dir)

for name in file_list:

split(name)

好了,看起来是不是很简单,大家快去试试吧,想学习更多的关于python的小技巧,可以关注我哦,也可以以去小猿圈官网,上边有视频教程,从零基础到实战。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容