python 拆分excel 随机分组

今天同事需要有一个将excel 里面数据随机分成特定的几个组,并将每组数据分别生成excel

正好刚接触python,用python写了个小工具,打包成exe 很方便 

#!/usr/bin/env python3
# encoding:utf-8
'''
@author: yingk
@file: excel.py
'''

import configparser
import xlrd
import xlwt
import os
from random import shuffle

def mkdir(path):
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path)
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)

#os.path.realpath:获取当前执行脚本的绝对路径。
#os.path.split:如果给出的是一个目录和文件名,则输出路径和文件名
proDir = os.path.split(os.path.realpath(__file__))[0]
configPath = os.path.join(proDir, "config.ini")

conf = configparser.ConfigParser()
conf.read(configPath,encoding='UTF-8') # 读取内容
#分组
group=conf.getint("config","group")
#读取文件夹下excel
excelPath = os.path.join(proDir, "excel")
filenames = os.listdir(excelPath)
limit = 10
for filename in filenames:
    readbook = os.path.join(excelPath, filename) #原始文件路径
    spNum = "." in filename
    if not spNum:
        continue
    savebook = os.path.join(excelPath, filename.split(".")[0])
    Suffix = filename.split(".")[1]
    mkdir(savebook)
    data = xlrd.open_workbook(readbook)
    # 获取sheet
    table = data.sheets()[0]  # 获取第一个sheet的所有数据
    # 行数
    nrows = table.nrows
    rowNum=[]
    for i in range(1,nrows):
        rowNum.append(i)
    shuffle(rowNum)  # 重排序
    m = int(len(rowNum) / group)
    # 列数
    ncols = table.ncols

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

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

    title_row = table.row_values(0)  # 获取首行的标题
    #
    i =0
    for row in range(0, len(rowNum), m):
        i+=1
        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])
        b=0
        for a in rowNum[row:row + m]:
            b+=1
            row_content = table.row_values(a)
            for col in range(0, ncols):
                worksheet.write(b, col, row_content[col])
        workbook.save(savebook + "\\" + filename.split(".")[0] +"_"+str(i) +"."+ Suffix)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值