excel 的 '分身之术' ----- 一个 excel 拆分多个 excel
最近在做一个项目时遇到处理 excel 的问题,一个 excel 有将近一万条数据,需要将 excel 里的内容按 2000 行进行拆分。并保持拆分的每个 excel 保持标题不变。
此处为 excel 的母版
上代码 😁 😆
import xlrd
import xlwt
limit = 2000
readbook = "C:\\Users\\lenovo\\Desktop\\HR\\first\\过账.xls" #原始文件路径
savebook = "C:\\Users\\lenovo\\Desktop\\HR\\first" #要保存的目录
data = xlrd.open_workbook(readbook)
# 获取sheet
table = data.sheets()[0] # 获取第一个sheet的所有数据
# 行数
nrows = table.nrows - 6
# 列数
ncols = table.ncols
sheets = nrows / limit # 总共需要多少excel
if not sheets.is_integer(): # 如果不是整除则需要+1
sheets = sheets + 1
title_row0,title_row1,title_row2,title_row3,title_row4,title_row5 = table.row_values(0),table.row_values(1),table.row_values(2),table.row_values(3),table.row_values(4),table.row_values(5) # 获取标题
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_row0[col])
worksheet.write(1, col, title_row1[col])
worksheet.write(2, col, title_row2[col])
worksheet.write(3, col, title_row3[col])
worksheet.write(4, col, title_row4[col])
worksheet.write(5, col, title_row5[col])
for row in range(6, limit+6):#每次循环limit行
newRow = row+limit*i
if newRow < nrows + 6:
row_content = table.row_values(newRow)
for col in range(0, ncols):
worksheet.write(row, col, row_content[col])
workbook.save(savebook+"/"+str(i+1)+".xls")
生成了五个子 excel,我的标题为六行,生成的 excel 共 2006 行。
第一个 excel
第一个 excel 的末尾
第二个 excel
第二个 excel 的末尾
不错的分享,学习了。
很好的分享,学习了!