描述:当某个excel文件过大时,需要将其拆分成多个文件来保存。

数据格式如下:(假如下图中数据非常多)

示例代码1:

import openpyxl# 读取数据
load_data = openpyxl.load_workbook("data/体检表.xlsx")# 获取sheet0中数据
table_data = load_data[load_data.sheetnames[0]]
# print(table_data)# 循环读取每行数据
row_data_list = []
for row in table_data.iter_rows():# 判断行为空跳过循环if not row:continue# 读取每一行数据data = [row[i].value for i in range(len(row))]# print(data)row_data_list.append(data)print(row_data_list)
# 将数据拆分为多个子数据列表,此时默认每个excel表格中3条数据
sub_data_list = []
sub_datas_list = []
for i in range(len(row_data_list)):if i % 3 == 0 and i != 0:sub_datas_list.append(sub_data_list)sub_data_list = []sub_data_list.append(row_data_list[i])
sub_datas_list.append(sub_data_list)
print(sub_datas_list)# 将拆分的子列表分别保存在excel文件中
num = 1
for sub_data in sub_datas_list:# 创建新的excel对象new_excel = openpyxl.Workbook()sheet = new_excel.activefor i in range(1, len(sub_data) + 1):for j in range(1, 6):sheet.cell(row=i, column=j, value=sub_data[i-1][j-1])new_excel.save(f'data/体检表_{num}.xlsx')num += 1

运行结果:

上述结果有时候不是我们想要的结果,从第个excel表格中开始就没有表头了,继续优化代码,如下所示。

示例代码2:

import openpyxl# 读取数据
load_data = openpyxl.load_workbook("data/体检表.xlsx")# 获取sheet0中数据
table_data = load_data[load_data.sheetnames[0]]
# print(table_data)# 循环读取每行数据
row_data_list = []
count = 0
for row in table_data.iter_rows():count += 1if count == 1:# 保存表头title = [row[i].value for i in range(len(row))]continue# 判断行为空跳过循环if not row:continue# 读取每一行数据data = [row[i].value for i in range(len(row))]# print(data)row_data_list.append(data)# print(row_data_list)
# 将数据拆分为多个子数据列表,此时默认每个excel表格中3条数据
sub_data_list = []
sub_datas_list = []
for i in range(len(row_data_list)):if i % 3 == 0 and i != 0:sub_datas_list.append(sub_data_list)sub_data_list = []sub_data_list.append(row_data_list[i])
sub_datas_list.append(sub_data_list)
# print(sub_datas_list)# 将表头放到每个子列表中的第一个位置
sub_datas_list_title = []
for sub_data_list in sub_datas_list:sub_data_list.insert(0, title)sub_datas_list_title.append(sub_data_list)
# print(sub_datas_list_title)# 将拆分的子列表分别保存在excel文件中
num = 1
for sub_data in sub_datas_list_title:# 创建新的excel对象new_excel = openpyxl.Workbook()sheet = new_excel.activefor i in range(1, len(sub_data) + 1):for j in range(1, 6):sheet.cell(row=i, column=j, value=sub_data[i-1][j-1])new_excel.save(f'data/体检表_{num}.xlsx')num += 1

运行结果:

完善上述代码,封装成函数。

示例代码3:

import openpyxldef load_data(file_path):# 读取数据load_data = openpyxl.load_workbook(file_path)# 获取sheet0中数据table_data = load_data[load_data.sheetnames[0]]# print(table_data)# 循环读取每行数据row_data_list = []count = 0for row in table_data.iter_rows():count += 1if count == 1:# 保存表头title = [row[i].value for i in range(len(row))]continue# 判断行为空跳过循环if not row:continue# 读取每一行数据data = [row[i].value for i in range(len(row))]# print(data)row_data_list.append(data)# print(row_data_list)return title, row_data_listdef split_data(title, row_data_list, amount):# 将数据拆分为多个子数据列表sub_data_list = []sub_datas_list = []for i in range(len(row_data_list)):if i % amount == 0 and i != 0:sub_datas_list.append(sub_data_list)sub_data_list = []sub_data_list.append(row_data_list[i])sub_datas_list.append(sub_data_list)# print(sub_datas_list)# 将表头放到每个子列表中的第一个位置sub_datas_list_title = []for sub_data_list in sub_datas_list:sub_data_list.insert(0, title)sub_datas_list_title.append(sub_data_list)print(sub_datas_list_title)return sub_datas_list_titledef save_data(sub_datas_list_title):# 将拆分的子列表分别保存在excel文件中# 创建新的excel对象num = 1for sub_data in sub_datas_list_title:new_excel = openpyxl.Workbook()  # 注意:这个要放在循环内,每循环一次都要新建,要不然下一次循环是覆盖上次文档操作sheet = new_excel.activeprint(sub_data)for i in range(1, len(sub_data) + 1):for j in range(1, 6):sheet.cell(row=i, column=j, value=sub_data[i-1][j-1])new_excel.save(f'data/体检表{num}.xlsx')num += 1if __name__ == '__main__':file_path = "data/体检表.xlsx"# 读取数据title, row_data_list = load_data(file_path)# 拆分数据amount = 6  # 每个excel表格中放几条数据sub_datas_list_title = split_data(title, row_data_list, amount)# 保存数据到文件中save_data(sub_datas_list_title)

将execl文件拆分为多个excel文件相关推荐

  1. python拆分excel的sheet为单文件_WPS 2019 多个sheet表拆分成独立的excel文件

    参考: 场景:将多个sheet表拆分成独立的excel文件 一.安装VB工具: 默认情况下:wps -- 开发工具 --- VB 编辑器是灰选状态(即不可用状态),此时需要先安装vb工具:VBA Fo ...

  2. C#将一个excel工作表根据指定范围拆分为多个excel文件

    C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其 ...

  3. 按Sheet拆分 为 多个Excel文件工具

    使用这个工具,按Sheet拆分为多个Excel文件.使用步骤如下: 工具地址:Excel常用在线工具 工具位置: 1.解压缩,用office的Excel打开<SlipToFileBySheet. ...

  4. print python excel分隔_办公自动化 Python 小工具,对Excel文件,按某一列拆分成多个Excel文件或sheet...

    使用pandas.xlwings.os 库文件,对Excel文件,按某一列拆分成多个Excel文件或sheet,提高工作效率. # -*- coding: utf-8 -*- "" ...

  5. 多個excel文件合并到一個excel文件

    各位大俠下午好:         小弟在把多個由水晶報表導出的excel文件合并到一個excel文件的時候發現有一下問題:         圖片和表格重疊在一起,也就是說報表的圖形遮住了表格文字.如果 ...

  6. php原生读取excel文件夹,原生php实现excel文件读写的方法分析php技巧

    这篇文章主要介绍了原生php实现excel文件读写的方法,结合实例形式分析了采用原生php针对Excel进行读写操作的相关实现方法与操作注意事项,需要的朋友可以参考下 本文实例分析了原生php实现ex ...

  7. php导出excel格式文件,PHP导入与导出Excel文件的方法

    一.PHP导出Excel文件 1,推荐phpexcel,官方网站: http://www.codeplex.com/PHPExcel 导入导出都成,可以导出office2007格式,同时兼容2003 ...

  8. python3指定目录所有excel_Python——合并指定文件夹下的所有excel文件

    前提:该文件夹下所有文件有表头且具有相同的表头. import glob # 同下 from numpy import * #请提前在CMD下安装完毕,pip install numppy impor ...

  9. csv和 文件流(二进制)excel文件转化为blob

    如果是文件流(二进制)excel文件转化为blob,需要传 { responseType: "arraybuffer" } configApi.post(`/platform/pu ...

最新文章

  1. csla java_Csla框架之命令对象理解
  2. 对校招生培养工作的建议_高校学生会组织深化改革评估工作组对我校学生会复核验收...
  3. react页面数据过多怎么办_性能!!让你的 React 组件跑得再快一点,收藏
  4. c语言前后指针怎么用,详解一下——C语言指针该怎么用
  5. 鸿蒙810 980,稳了!鸿蒙系统升级名单再曝:至少麒麟980机型都能升级
  6. 最简单的 post 请求发起方式、调用其它系统接口
  7. lg空调代码大全解决_LG空调故障代码大全
  8. python csv 排序_python数据清洗
  9. 用python让excel飞起来 pdf_讯飞智能键盘K710 一款无网络实力依然在线的黑科技产品...
  10. C++新特性探究(十四):function
  11. centos7网卡编辑_Centos7修改网卡名称
  12. dozer无法映射java8中的LocalDateTime类型的解决方案
  13. Kali-简易的Linux系统Dos网站压力测试(攻击)
  14. html如何链接icon,iconfont在线链接使用
  15. 用c++语言编写的小程序,利用C++编写一些有趣的小程序
  16. HEVC帧间预测原理
  17. mongodb建索引遇到的一个错误解决办法
  18. 12个 Linux 命令的超级用法实例,超实用!
  19. 关于sqoop抽取数据时显示ERROR :/QueryResult.java‘ already exists 解读
  20. 【训练题27:单调队列实现RMQ(附带详细说明)】 H :圣诞糖果 | 吉首大学第十届“新星杯”

热门文章

  1. 【信息检索】链接分析
  2. 冰点还原精灵可以支持1T大硬盘
  3. AutoCAD2007写的VBA,在Win7上可以正常运行,为什么在Win10系统上运行费劲
  4. ubuntu 下载verycd下资源
  5. SDL2.0--绘制文字
  6. Android开发:kotlin语言实现简易计算器
  7. 解决“使用dameware访问远程主机后,再用windows远程桌面,远程鼠标失灵”问题
  8. linux安装中文字体 yum,给CentOS安装中文字体(转)
  9. 毕业论文ppt的研究方法及过程计算机专业,本科毕业论文的开题报告ppt
  10. html播放器添加广告,我用htmlvideo想在播放视频前加载一段几分钟的广告 怎么写啊...