实现Excel里每个sheet的排序并整合在一个sheet里
针对一个excel文件中多个sheet的批处理,excel的选定全部工作表功能可以解决很多问题(如:转置、替换等),但是对于排序确难以实现。因此在这里使用python工具来实现批量排序。
- 最终目的是实现对每个sheet文件排序后,将所有sheet拼接在一个sheet中。
- 最初打算先批量排序,然后在实现拼接。
但是在运行批量排序的代码中发现sheet发生覆盖,虽然网上有避免覆盖的方法,但是不适用于这里。这里先介绍该方法。
https://blog.csdn.net/qq_39697564/article/details/88640686
# 1. 基本模块的导入
import numpy as np
import pandas as pd# 2. 创建不同的写入数据
DF_1 = pd.DataFrame(np.random.rand(12).reshape(6,2),columns=list('AB'))
DF_2 = pd.DataFrame(np.random.rand(12).reshape(6,2),columns=list('CD'))+1
DF_3 = pd.DataFrame(np.random.rand(12).reshape(6,2),columns=list('EF'))+2
DF_4 = pd.DataFrame(np.random.rand(12).reshape(6,2),columns=list('GH'))+3# 3. 数据写出
with pd.ExcelWriter(r'C:\Users\Desktop\ExcelTest\DF_All.xlsx') as writer:DF_1.to_excel(writer,sheet_name='DF_1')DF_2.to_excel(writer,sheet_name='DF_2')DF_3.to_excel(writer,sheet_name='DF_3')DF_4.to_excel(writer,sheet_name='DF_4')
writer.save()
writer.close()
print('Finished.')
- 由上述代码也可以看出这里的每一个将要分别写入excel的数据框是独立的。但是我是想从一个excel中的多的sheet提取,然后处理后再次写入excel。
# -*- coding: UTF-8 -*-
#导入所需模块
import xlrd
import numpy as np
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbookexcel_name = r'C:\4_stepSHIYAN\shiyan222.xlsx' #表格地址+表格名
wb = xlrd.open_workbook(excel_name) # 获取workbook中所有的表格
sheets = wb.sheet_names()
print (sheets)# 循环遍历所有sheet
#alldata = DataFrame()
for i in range(len(sheets)):df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')df.sort_values("POINTID", ascending=True, inplace=True)print (df) #查看dataframe###保存为新的sheet,首先新建sheetwith pd.ExcelWriter(r'C:\4_stepSHIYAN\new.xlsx' ,engin='openpyxl') as writer :for j in range(3):name = "sheet"+ str(j)df.to_excel(writer,sheet_name= name )print ('处理完成!')##########上述代码跑到第二个for语句时,实际只是对于i内容的两次存储。并没真正实现i1、i的单独存储
未解决疑问——如何实现从excel里读取出来的多个sheet处理后再次写入另一个excel的多个sheet???
- 但是对于自己的最终目标,可以直接将处理完的sheet拼接起来后再写入一个sheet中!!
# -*- coding: UTF-8 -*- #导入所需模块 import xlrd import pandas as pd from pandas import DataFrame from openpyxl import load_workbookexcel_name = r'C:\4_stepSHIYAN\shiyan222.xlsx' #表格地址+表格名 wb = xlrd.open_workbook(excel_name) # 获取workbook中所有的表格 sheets = wb.sheet_names() print (sheets)# 循环遍历所有sheet alldata = DataFrame() for i in range(len(sheets)):df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')df.sort_values("POINTID", ascending=True, inplace=True) #对sheet内容按照第一列-POINTID-排序、inplace=True 将排序之后的数据直接替换原来的数据框(默认为False,False时,那么原来顺序没变,只是返回的是排序的)、ascending=True默认True升序排列;False降序排列alldata = alldata.append(df) ##拼接 #查看dataframe #print alldata#保存为新的sheet,首先新建sheet,合并后的数据保存到新sheet中 writer = pd.ExcelWriter( r'C:\4_stepSHIYAN\shiyan222.xlsx' ,engin='openpyxl') book = load_workbook(writer.path) ####作用? writer.book = book#利用dataframe.to_excel保存合并后的数据到新的sheet alldata.to_excel(excel_writer=writer,sheet_name="ALLDATA")#生成新的sheet命名为ALLDATA writer.save() writer.close() print ('处理完成!')
实现Excel里每个sheet的排序并整合在一个sheet里相关推荐
- matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...
如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...
- Python对表格中的sheet进行排序【openpyxl】工作技能整理系列
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 今天给大家分享 ...
- 计算机中如何按照成绩排名,电脑上名次怎么排序:怎么在excel 中进行成绩名次排序...
EXCEL如何对自动排名的结果再进行自动排序? 1.首开excel表格,按住ctrl连续. 2.然后筛选一些人名后,发现时序号不连续了. 3.右侧创建一个序号列,输入=subtotal,选择3. 4. ...
- antd table 时间搜索_antd table按表格里的日期去排序操作
表格内容 根据票据日期升序(这里是已经排序后的效果) 上代码 代码中data的内容如下 根据paper_date排序,因为目前这种格式不支持比较,需要先转换成时间戳 new Date(aTimeStr ...
- python打开excel指定的sheet_pandds指定一个或多个sheet读取excel(sheet_name参数)
pandas读取excel常用read_excel函数,官方文档上该函数有很多参数,本节课讲解sheet_name参数,sheet_name决定读取哪些sheet. sheet_name参数可选类型如 ...
- python按某列拆分excel表格_Python实现将excel表格按某列拆分为多个sheet(模板格式不变)...
#将一个excel表格,按照某列分为不同的sheet,并且将id作为sheet表格的名称 from openpyxl import load_workbook #加载需要拆分的总表个 wb = loa ...
- excel中条形图的条目排序与逆序
excel中条形图的条目排序与逆序 在excel中创建一个条形图,经常会出现这样的情况,假设你的表格是: a 1 b 2 c 3 d 4 但是默认的条形图从上到下的条目顺序是dcba,纠结得很 ...
- Excel 表格实现多列排序
Excel 表格实现多列排序 1.原始数据 2.需要实现 按照 表主键 有效日期 创建日期 三列进行升序排列 数据->排序-> 添加条件->选择列名 点击确定 3.排序后的结果 ...
- php表格单元格怎么实现排序,excel表格数据怎么自动排列-excel表格如何实现自动排序...
excel表格如何实现自动排序 1.首先打excel表格,在第一个单中输入星期,如图所示. 2.在单元格下面的单元入星期一,鼠标放在星期一单元格的右下角. 3.完成以上步骤后,鼠标不放,即自动排序出现 ...
最新文章
- linux下遇到的小问题与解决方法
- [Android] for ArcFace Demo
- 部署与管理ZooKeeper
- php 替换字符串 图片,PHP替换字符串实现图片自适应屏幕实例代码
- 关中断是否禁止任务调度?关中断能作为互斥吗?
- linux版的navicat提示丢失scilexer.dll
- 对openflow 1.0协议的扩展
- 手把手教你通过Eclipse工程配置调用JNI完全攻略
- Matrix67:漫话中文分词算法
- THUPC2019划水记
- Struct1中 Form表单提交的几种方式以及无刷新提交的方式
- win10打开计算机出现马赛克,主编处理win10系统播放视频影片出现锯齿、马赛克、模糊的办法?...
- rtmp代理php源码_RTMP直播系统(示例代码)
- 群晖NAS、硬盘及路由器选购及组网,打造家庭资源共享环境
- AUTOCAD——设置图层
- C盘空间不足,UE4的deriveddatacache目录位置修改
- 数据库常用字段、列属性、表类型与SQLyog工具的使用
- OSChina 周五乱弹 —— 终于发现红薯看片的证据了
- 低分辨率人脸识别(LRFR)相关文章整理——(待更)
- c32循迹小车c语言程序,stm32篇--小车循迹
热门文章
- 部署JAX-WS Web服务作为战争中的Apache Tomcat(Deploying JAX-WS webservice as War in Apache Tomcat)...
- i.MX6ULL系统移植:Linux移植6 - Linux 内核移植
- 云函数+微信公众号到个人微信
- IObit Driver Booster 无法更新驱动的解决办法
- YEEZY 350灰橙被叫成灰橘,BOOST V2椰子表示很慷慨
- html多行注释如何实现,html多行注释如何实现?
- MySql 删除索引
- 用HTML制作简单的个人介绍主页
- 入门必看,快速判断mos管封装引脚的三个极和它的好坏
- 细究Android开发代码中心化所带来的问题