Excel文件拆分成多个

拆分excel文件为多个

01 背景

某系统导出的excel文件,A1单元格为空,A列为登记编号数据
现需要尽可能平均分为4份,分别处理

02 用 openpyxl 读取文件

  • 用默认读写方式打开文件filename
  • 锁定工作簿下工作表内的A1单元格
  • 处理并保存
    wb = load_workbook(filename=filename)
    ce = wb['Sheet1']['A1']
    if ce.value is None:
        ce = "登记编号"
    else:
        print("-----------------------------------------")
        print("请打开文件检查!")
    wb.save(filename=filename)

03 用pandas实现拆分文件

  • 首先获取行数
  • 计算平均值
  • 按照平均值存表,剩余的独存
    rows,cols = df.shape #获取行数,列数,默认第一列表表头不算行数
    split_num = math.ceil(rows/filenum) #指定分隔行数
    value = (filenum if rows%4 == 0 else filenum - 1) #标准分割次数
    rows_format = value*split_num  #标准分割所占用的总行数
    #存储列表的列表
    new_list = [[i,i+split_num] for i in range(0,rows_format,split_num)]

    #标准行数文件
    for i_j in new_list:
        i,j = i_j
        excel_small = df[i:j]
        #index为False,否则就把行索引写入了
        excel_small.to_excel("C:/Users/silent_426/Desktop/爬状态/{0}_{1}.xlsx".format(i,j),index=False)
    if rows%4 != 0:
        #最后分割出的文件
        df[rows_format:].to_excel("C:/Users/silent_426/Desktop/爬状态/last.xlsx",index=False)

04 完整代码

import pandas as pd
import math
from openpyxl import load_workbook

#修改A1单元格
def modify_cell(filename):

    wb = load_workbook(filename=filename)
    ce = wb['Sheet1']['A1']
    if ce.value is None:
        ce = "登记编号"
    else:
        print("-----------------------------------------")
        print("请打开文件检查!")
    wb.save(filename=filename)

#分割文件
def splitTofile(df,filenum):
    rows,cols = df.shape #获取行数,列数,默认第一列表表头不算行数
    split_num = math.ceil(rows/filenum) #指定分隔行数
    value = (filenum if rows%4 == 0 else filenum - 1) #标准分割次数
    rows_format = value*split_num  #标准分割所占用的总行数
    #存储列表的列表
    new_list = [[i,i+split_num] for i in range(0,rows_format,split_num)]

    #标准行数文件
    for i_j in new_list:
        i,j = i_j
        excel_small = df[i:j]
        #index为False,否则就把行索引写入了
        excel_small.to_excel("C:/Users/silent_426/Desktop/爬状态/{0}_{1}.xlsx".format(i,j),index=False)
    if rows%4 != 0:
        #最后分割出的文件
        df[rows_format:].to_excel("C:/Users/silent_426/Desktop/爬状态/last.xlsx",index=False)

if __name__ == '__main__':
    filename = "C:/Users/silent_426/Desktop/工作簿1.xlsx"
    modify_cell(filename)
    df = pd.read_excel(filename)
    #分割文件个数
    filenum = 4
    splitTofile(df,filenum)
posted @ 2021-06-11 12:40  cvhao  阅读(597)  评论(0)    收藏  举报