最近看视频学习,老师布置了个作业,关于如何使用python将多个excel进行合并,老师写的代码我感觉比较复杂,下面是我自己改良之后较简单的方式。

实现这个功能主要有两种方法,一种是用xlwd,xlsxwriter库结合,不管是xlsx,xls都是适用的;另一种是openpyxl,这个库只对xlsx有效。

本文针对第一种方式进行讲解。

首先准备三个excel文件,目的是将三个excel的sheet进行合并:

test_excel1.xlsx

为了简化测试,另外两个excel文件test_excel2.xlsx, test_excel3.xlsx的内容跟第一个excel是一致的。

下面是代码部分

-- coding:utf-8 --

import xlrd,xlsxwriter

待合并excel

allxls=["E:\python3_hellobi_work\excel\test_excel\test_excel1.xlsx",

"E:\python3_hellobi_work\excel\test_excel\test_excel2.xlsx",

"E:\python3_hellobi_work\excel\test_excel\test_excel3.xlsx"]

目标excel

end_xls="E:\python3_hellobi_work\excel\test_excel\final_excel.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

获取第一个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 file_name in allxls:

print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")

file_value=get_file_value(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()

----------------------------------------------end--------------------------------------------------------------

运行代码,看看目标excel:

两个excel已经合并到一起了。

哈哈。写完啦~~~

使用python将多个excel合并的更多相关文章

  1. Python将多个excel表格合并为一个表格

    Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...

  2. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  3. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

  4. 【转发】Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  5. python读写word、excel、csv、json文件

    http://blog.csdn.net/pipisorry/article/details/50368044 python读写word文档 (include wps)将word文档转换成txt文档 ...

  6. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  7. python将两个数组合并成一个数组的两种方法的代码

    内容过程中,把写内容过程中常用的内容收藏起来,下面的资料是关于python将两个数组合并成一个数组的两种方法的内容,希望能对小伙伴们有帮助. c1 = ["Red","G ...

  8. python使用xlrd读取excel数据时,整数变小数的解决办法

    python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...

  9. 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)

    Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...

随机推荐

  1. PHP异常处理机制

    1. 异常: 异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 当异常被触发时,通常会发生: (1)当前代码状态被保存: (2)代码执行被切换到预定义的异常处理器函数: (3)根据 ...

  2. LeetCode 604. Design Compressed String Iterator (设计压缩字符迭代器)$

    Design and implement a data structure for a compressed string iterator. It should support the follow ...

  3. FastDFS与Nginx的配置说明

    1.简介     FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载 ...

  4. Myeclipse 2014破解教程

    现在很多java编程软件人士大都使用MyEclipse,这软件的强大之处我就不说了,我说下安装步骤与破解步骤,若无JDK则先安装再配置环境变量,这个我就不讲了 工具/原料   MyEclipse安装包 ...

  5. Lua如何管理”package”

    Lua如何管理"package" 方式一: 私有方法和变量都需要显式定义为local类型的,这很容易造成错误.一旦不小心漏写,就又将方法定义为全局的了. "package ...

  6. html浏览器存储连续多个空格,只显示一个空格

    这个问题找了很久,发现css的 white-space:pre 完美解决 .white-space { white-space:pre }

  7. Azkaban安装部署

    在root的用户下搭建的 • Azkaban安装部署(可参照:http://azkaban.github.io/azkaban/docs/latest/) 1):前提 安装JDK,安装Hadoop,H ...

  8. C# linq左连接与分组

    1.左连接使用DefaultIfEmpty(): 2.分组时候判断newper.FirstOrDefault() == null ? null: newper.ToList()这个经常出错误,如果不判 ...

  9. HTML5 Geolocation API工作原理[转载]

    大家都知道,HTML5 Geolocation 可以使用 IP 地址.基于 Web 的数据库.无线网络连接和三角测量或 GPS 技术来确定经度和纬度. 问题: 在一个基于地理位置服务的个人业余项目(小 ...

  10. MQTT——订阅报文

    我们已经把相关的连接报文搞定了.笔者想来想去还是决定先讲解一下订阅报文(SUBSCRIBE ).如果传统的通信方式是客户端和服务端之间一般就直接传输信息.但是MQTT的通信方式是通过发布/订阅的方式进 ...