使用python把Excel表格由一個分隔成多個
站長現(xiàn)在工作的地方,最近經(jīng)常用到Excel導(dǎo)入數(shù)據(jù),公司的網(wǎng)站是PHP做的,型號價格的更新每次都是通過Excel導(dǎo)入。
一次性兩萬條記錄的導(dǎo)入勉強可以,數(shù)據(jù)量再大就超時了。而有些產(chǎn)品的價格表格在5萬以上,此時導(dǎo)入的時候就需要拆分成幾個數(shù)據(jù)量少于2萬的表格。每個類型碼有多個Excel表,靠手工來操作不是程序員該干的事情,于是我用起了不是很熟練的Python來解決。
代碼如下,希望給新手一個幫助。(其實我也是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] # 行數(shù) nrows = table.nrows print('總行數(shù){}'.format(nrows)) # 列數(shù) ncols = table.ncols sheets = math.ceil(nrows / limit) print('拆分文件數(shù)量:{}'.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_xls(name)