python 按照sheet合并多个Excel的示例代码(多个sheet)

作者:小小喽啰 时间:2022-07-13 05:20:20 

工作中会遇到这样的需求,有多个Excel的格式一样,都有多个sheet,且每个sheet的名字和格式一样,我们需要按照sheet 合并,就是说合并后的表的格式和合并钱的格式是一样的。A、B、C表格式如图

python 按照sheet合并多个Excel的示例代码(多个sheet)python 按照sheet合并多个Excel的示例代码(多个sheet)

现在需要合并成下图:

python 按照sheet合并多个Excel的示例代码(多个sheet)python 按照sheet合并多个Excel的示例代码(多个sheet)

我这次处理是保留第一个表的首行,其余的表的首行都不保留。因此结果会和上面有所不同,上面的是将所有的首行都保存


import xlrd,xlsxwriter

#待合并excel
allxls=["C:/xxx/xxx.xlsx",
       "C:/xxx/xxx.xlsx"]

#目标excel
end_xls="C:/xxx/merge.xlsx"

def open_xls(file):
   try:
       fh=xlrd.open_workbook(file)
       return fh
   except Exception as e:
       print("打开文件错误:"+e)

#根据excel名以及第几个标签信息就可以得到具体标签的内容
def get_file_value(filename,sheetnum):
   rvalue=[]
   fh=open_xls(filename)
   sheet=fh.sheets()[sheetnum]
   row_num=sheet.nrows
   for rownum in range(0,row_num):
       rvalue.append(sheet.row_values(rownum))
   return rvalue

def get_file_value_1(filename,sheetnum):
   rvalue=[]
   fh=open_xls(filename)
   sheet=fh.sheets()[sheetnum]
   row_num=sheet.nrows
   for rownum in range(1,row_num):
       rvalue.append(sheet.row_values(rownum))
   return rvalue
#获取第一个excel的sheet个数以及名字作为标准
first_file_fh=open_xls(allxls[0])
first_file_sheet=first_file_fh.sheets()
first_file_sheet_num=len(first_file_sheet)
sheet_name=[]
for sheetname in first_file_sheet:
   sheet_name.append(sheetname.name)

#定义一个目标excel
endxls=xlsxwriter.Workbook(end_xls)

all_sheet_value=[]

#把所有内容都放到列表all_sheet_value中
for sheet_num in range(0,first_file_sheet_num):
   all_sheet_value.append([])
   for i,file_name in enumerate(allxls):
       if i==0:
           print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")        
           file_value=get_file_value(file_name,sheet_num)
           all_sheet_value[sheet_num].append(file_value)
       else:
           print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")        
           file_value=get_file_value_1(file_name,sheet_num)
           all_sheet_value[sheet_num].append(file_value)

#print(all_sheet_value)

num=-1
sheet_index=-1

#将列表all_sheet_value的内容写入目标excel
for sheet in all_sheet_value:
   sheet_index+=1
   end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index])
   num+=1
   num1=-1
   for sheet1 in sheet:
       for sheet2 in sheet1:
           num1+=1
           num2=-1
           for sheet3 in sheet2:
               num2+=1
               #print(num,num1,num2,sheet3)
               #在第num1行的第num2列写入sheet3的内容
               end_xls_sheet.write(num1,num2,sheet3)

endxls.close()

来源:https://www.cnblogs.com/cgmcoding/p/15233800.html

标签:python,合并,excel
0
投稿

猜你喜欢

  • 离线安装Pyecharts的步骤以及依赖包流程

    2021-12-16 11:43:12
  • python基础教程之简单入门说明(变量和控制语言使用方法)

    2023-01-06 00:25:20
  • php 伪造本地文件包含漏洞的代码

    2023-11-17 06:36:40
  • 有时应该告诉我,但有时不应该告诉我

    2009-03-19 13:40:00
  • php动态生成版权所有信息的方法

    2024-05-02 17:17:30
  • Python3.9.1中使用split()的处理方法(推荐)

    2022-04-17 23:16:12
  • 在Python的框架中为MySQL实现restful接口的教程

    2024-01-13 08:09:54
  • SQL Server存储过程中编写事务处理的方法小结

    2024-01-15 15:24:24
  • python登陆asp网站页面的实现代码

    2021-01-20 00:03:31
  • go语言编程之select信道处理示例详解

    2024-04-26 17:16:14
  • matlab画三维图像的示例代码(附demo)

    2023-10-03 11:39:44
  • ASP进阶学习之认识数学函数

    2007-10-08 13:15:00
  • Python3 pip3 list 出现 DEPRECATION 警告的解决方法

    2021-02-24 10:21:59
  • MySQL内连接和外连接及七种SQL JOINS的实现

    2024-01-21 09:23:16
  • Pthon批量处理将pdb文件生成dssp文件

    2021-10-07 13:11:04
  • python爬虫实现教程转换成 PDF 电子书

    2023-08-12 21:51:27
  • 如何利用C#通过sql语句操作Sqlserver数据库教程

    2024-01-12 19:24:00
  • 浅谈Pycharm最有必要改的几个默认设置项

    2021-10-13 05:33:38
  • python实现名片管理系统

    2021-04-02 22:21:40
  • 使用Python创建websocket服务端并给出不同客户端的请求

    2023-08-01 23:29:32
  • asp之家 网络编程 m.aspxhome.com