果然,只有工作才能促使我学习。
1、需求介绍
就是要把九个字段名一样且每个表数据量是固定的表合并。
内部长这样:

表格都是从数据库里跑出来的,所以格式比较固定,每个表数据量固定就是,第一个表197行,第二个表99行这样。
2、读取文件
我念在自己是初学,决定不用什么文件遍历之类的,简单粗暴读取了9个文件(写后面时哭死):

#没错,我引用了这么多库最后发现都用(不)不(会)到(用)
import openpyxl as op
import pandas as pd
import xlrd
import os
#读取文件,文件路径是绝对路径,这里做了隐藏
workbook_zx_lt = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(中兴_联通)-SQL订阅处理.xlsx')
workbook_alx_dx = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(爱立信_电信)-SQL订阅处理.xlsx')
workbook_dt_dx = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(大唐_电信)-SQL订阅处理.xlsx')
workbook_zx_dx = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(中兴_电信)-SQL订阅处理.xlsx')
workbook_dt_lt = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(大唐_联通)-SQL订阅处理.xlsx')
workbook_hw_lt = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(华为_联通)-SQL订阅处理.xlsx')
workbook_alx_lt = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(爱立信_联通)-SQL订阅处理.xlsx')
workbook_njy_dx = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(诺基亚_电信)-SQL订阅处理.xlsx')
workbook_hw_dx = op.load_workbook(filename='C:\\Downloads\\5GR-I2文件输出(华为_电信)-SQL订阅处理.xlsx')

2、读取表格
每个文件只有一个工作表,我又简单粗暴读取了所有表,并且记录了数据范围

sheet1 = workbook_zx_lt['SQL订阅日志列表导出']#A1:N197
#print(sheet1.dimensions)
sheet2 = workbook_alx_dx['SQL订阅日志列表导出']#A1:N99
sheet3 = workbook_dt_dx['SQL订阅日志列表导出']#A1:N85
sheet4 = workbook_zx_dx['SQL订阅日志列表导出']#A1:N379
sheet5 = workbook_dt_lt['SQL订阅日志列表导出']#A1:N43
sheet6 = workbook_hw_lt['SQL订阅日志列表导出']#A1:N253
sheet7 = workbook_alx_lt['SQL订阅日志列表导出']#A1:N113
sheet8 = workbook_njy_dx['SQL订阅日志列表导出']#A1:N15
sheet9 = workbook_hw_dx['SQL订阅日志列表导出']#A1:N393

3、获取表格数据
这一步也是我卡了最久的地方,一开始还想能不能直接把范围复制到新的表发现是我想简单了,然后不得不想到把每一行的数据形成一个数组,再写入到一个总的数组里。又写了9次。。。

all_data = []
#按行遍历表格
for row1 in sheet1.iter_rows(min_row=1,max_row=197,min_col=1,max_col=14):list1 = []#将每一单元格的值结果写入list1中,一个循环写一行,写第二行之前将list1清空for cell1 in row1:#print(cell1.value)  list1.append(cell1.value)#将每一行结果形成的数组写入总的列表中all_data.append(list1)#其他的表不需要表头,所以最小行从第2开始
for row2 in sheet2.iter_rows(min_row=2,max_row=99,min_col=1,max_col=14):list2 = []for cell2 in row2:  list2.append(cell2.value)all_data.append(list2)
#......后面的就不粘过来了,丢人

一个卡住我的地方是,list是不需要重新赋值的,也就是不能写成list2=list2.append(cell2.value),会报’NoneType’ object has no attribute ‘append’。
这里运行之后结果就是all_data列表分别存了每一行数据组成的数组[[‘’,‘’],[‘’,‘’]]
4、新建表格并写入

#新建文件
workbook = op.Workbook()
#获取活动工作表
sheet = workbook.active
#工作表命名
sheet.title = 'SQL订阅日志列表导出'
#将获取的总列表写入
for row in all_data:sheet.append(row)
#保存文件
total_new = workbook.save(filename='C:Desktop\\推送文件统计_20220403.xlsx')

整个程序到这里就结束了。以后每天要确保下载的文件是最新的,然后改个日期就可以一直用了,当然,还得确认数据量的确是固定的【emo】。

作为我第一个上手的小项目,虽然简单粗暴、代码冗余、维护困难、灵活性差、可读性差,但是能节约每天十分钟(可能不到)的工作时间,还是有那么点小成就感的。

5、后续的改进计划(如果我够勤快或者需求有变化的时候)
增加文件遍历,不用记录范围,尽量不重复!

最后,如果有大佬刷到这个文章,希望能帮忙看看重复循环的那一部分可以怎么优化,拜谢!

参考文章:
https://mp.weixin.qq.com/s/3eUzvnOViBXsCmi_PsuQOQ
https://blog.csdn.net/qq_41506882/article/details/104598994

python办公自动化 使用openpyxl合并excel表格相关推荐

  1. Python办公自动化之 openpyxl 操作 Excel

    今天给大家分享一篇用 openpyxl 操作 Excel 的 Python 办公自动化文章.5分钟就能掌握- 各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很 ...

  2. 【python办公自动化】如何在Excel表格里面插入对象

    前言 用openpyxl处理Excel数据还是蛮舒服的.同时也可以插入图片,不过插入图片有个弊端,那就是,它只是把图片按比例缩小了.要看大图你得拉大来看,并不舒服.于是,想着能否插入对象文件.双击直接 ...

  3. Python办公自动化——提取pdf文件中表格并到Excel

    Python办公自动化--提取pdf文件中表格合并到Excel 需求描述 现有一 pdf 文件内容如下,文件中内容主要是表格形式的获奖名单,共158页.现要读取这些表格信息并保存到 excel 文件中 ...

  4. python实现表格合并_Python实现合并excel表格的方法分析

    本文实例讲述了Python实现合并excel表格的方法.分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用 ...

  5. Python 使用 pandas 和 openpyxl 读取 excel 表格(读取指定行和列)

    前言 在使用Python处理表格时,pandas 和 openpyxl是使用最多的两个库.现在我来简单记录一下这两个库在处理Excel表格时一些常用操作. 1.使用pandas操作excel表格 (1 ...

  6. python使用openpyxl处理excel表格数据

    python使用openpyxl处理excel表格数据 前言 一.安装openpyxl包 二.读取excel数据 1. 获取excel表格的页码 2. 获取excel表格某一行的数据 3. 获取exc ...

  7. python写入excel怎么跨列居中_Python使用OpenPyXL处理Excel表格

    官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义 ...

  8. 如何使用python批量合并excel表格

    使用Python批量合并Excel表格的方法主要可以通过Pandas库来实现,具体步骤如下: 首先需要导入Pandas库和os库: import pandas as pd import os

  9. 在使用macbook合并Excel表格时,系统报错。(XLRDError)

    Python 学习日志 设备:MacBook Air 开发环境:Jupyter 问题:关于合并Excel表格时报错的问题. Trouble: 在使用macbook合并Excel表格时,系统报错.系统显 ...

  10. 计算营业额python代码_真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集...

    原标题:真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集 作者:吹牛Z 本文转自公众号:数据不吹牛 更新完Pandas基础教程,后台有不少旁友留言,想要了解怎么用 ...

最新文章

  1. 第一次软件工程作业(改进版)
  2. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(工具部署)
  3. Linux Kernel Development——列出系统中所有的进程
  4. JavaScript数组sort方法(数组排序)
  5. python xlrd模块_python之xlrd模块
  6. druid加密mysql_Druid 数据库用户密码加密 代码实现
  7. EntityFramework进阶——CodeFirst数据库迁移
  8. mysql 如何把整列数据*10_10张图告诉你,MySQL 是如何查找数据的?
  9. 使用Word 2003“格式→外文版式→带圈字符”功能可以输入10以上带圈序号。
  10. 通过 PPT 快速给证件照换底色
  11. python之 ffmpeg合并ts视频为mp4视频
  12. Vray材质——金属材质
  13. 薄透镜焦距的计算公式
  14. LibPcap经常丢包怎么办?
  15. syslinux linux 启动盘,syslinux启动盘制作
  16. The CXX compiler identification is unknown
  17. anchor译中文_anchor是什么意思中文翻译
  18. 旷视科技2022提前批校园招聘已经开启啦!
  19. 几乎每个人都听说过三皇五帝,那么三皇五帝是否存在?又是谁呢?
  20. 正在安装其他程序,请等待安装完成

热门文章

  1. java 拼图_Java 9:“拼图计划终于给了我们急需的Java安全带”
  2. 网络基础知识 -It is a rough road that leads to the heights of greatness. 崎岖不平的道路将通往伟大崇高之地。
  3. 设计模式---004策略模式---【巷子】
  4. 不变初心数——python
  5. DSPE-PEG12-Mal,C72H135N2O23P长臂亲水性小分子PEG试剂
  6. VMware虚拟机中安装Win10系统
  7. 蓝牙BLE协议分析【附代码实例】
  8. Telemetry 标准日志接口如何提升运维效率?
  9. 网易免费/付费163企业邮smtp服务器地址
  10. js实现手机端摇一摇