方法一:

使用xlsxwriter、openpyxl、xlrd包实现

import os

import xlsxwriter

import openpyxl

import xlrd

import time

#获取当前目录下所有文件列表

def getAllFiles():

excelList=[]

currentPath=os.getcwd()

fileList=os.listdir(currentPath)

for file in fileList:

if file.endswith('.xlsx') or file.endswith('.xls'):

if file!="excel_output.xlsx" and file!="~$excel_output.xlsx":

excelList.append(str(file))

return excelList

#合并xlsx的类

class MergeXlsx:

def __init__(self,inputFile):

self.file=inputFile

self.workBook=self.openXlsxFile(self.file)

self.sheetNames=self.getSheetNames(self.workBook)

def openXlsxFile(self,file):

return openpyxl.load_workbook(file)

#获取excel中的所有sheet

def getSheetNames(self,workBook):

return workBook.sheetnames         #获取所有sheet的name

#读取每个sheet中内容并返回列表

def mergeAllSheetData(self):

sheetData=[]

for sheetNum in range(len(self.sheetNames)):

table=self.workBook[self.sheetNames[sheetNum]]

print("正在读取 "+str(self.file)+" 的第 "+ str(sheetNum+1)+" 个sheet的内容")

for row in table.rows:

rowData=[]

if table.rows!=[]:

for c in row:

rowData.append(c.value)

sheetData.append(rowData)

#print(self.data)

return sheetData

#合并xls的类

class MergeXls:

def __init__(self,inputFile) -> None:

self.file=inputFile

self.data=[]

self.workBook=self.openXlsFile(self.file)

self.sheets=self.getSheets(self.workBook)

def openXlsFile(self,file):

return xlrd.open_workbook(file)

def getSheets(self,workBook):

return workBook.sheets()

def mergeAllSheetData(self):

sheetData=[]

for sheetNum in range(len(self.sheets)):

table=self.workBook[sheetNum]

print("正在读取 "+str(self.file)+" 的第 "+ str(sheetNum+1)+" 个sheet的内容")

for rowNum in range(table.nrows):

rowData=[]

if table.row_values(rowNum)!=[]:

for c in table.row_values(rowNum):

rowData.append(c)

sheetData.append(rowData)

return sheetData

#打开excel文件方法

if __name__=='__main__':

print("Excel数据合并处理程序v1(支持多sheet的合并,但性能较弱)")

print("有问题请联系张熙")

os.system("pause")

time_start=time.time()

allXls=getAllFiles()

try:

if allXls!=[]:

alldata=[]

outputFile="excel_output.xlsx"

for inputFilePath in allXls:

if str(inputFilePath).endswith('.xlsx'):             #处理xlsx文件

mergeXlsx=MergeXlsx(inputFilePath)

alldata.extend(mergeXlsx.mergeAllSheetData())

elif str(inputFilePath).endswith('.xls'):             ##处理xls文件

mergeXls=MergeXls(inputFilePath)

alldata.extend(mergeXls.mergeAllSheetData())

#print(alldata)

workBook=xlsxwriter.Workbook(outputFile)

workSheet=workBook.add_worksheet()

for r in range(len(alldata)):       #行数

for c in range(len(alldata[r])):     #列数

cell=alldata[r][c]

workSheet.write(r,c,cell)

workBook.close()

time_end=time.time()

use_time=time_end-time_start

print("===============================================================\n 合并完成,共耗时"+str(round(use_time,2))+"秒,数据存放在excel_output.xlsx")

os.system("pause")

else:

print("未找到xls或者xlsx文件! 你检查一下呢!")

os.system("pause")

except Exception as e:

print(str(e)+'\n'+"这个文件\"excel_output.xlsx\"被打开,请关闭它!")

os.system("pause")

方法二:

基于pandas实现

import time

import pandas as pd

import os

#查找当前目录下的excel文件

def getAllFiles():

excelList=[]

currentPath=os.getcwd()

fileList=os.listdir(currentPath)

for file in fileList:

if file.endswith('.xlsx') or file.endswith('.xls'):

if file!="excel_output.xlsx" and file!="~$excel_output.xlsx":

excelList.append(str(file))

return excelList        #返回文件路径的列表

if __name__=="__main__":

excelList=getAllFiles()

new_df=pd.DataFrame()

print("Excel数据合并程序v1_pro(在v1基础上提高了性能,去掉了多sheet的合并,仅支持多文档sheet1的合并)")

print("有问题请联系张熙")

os.system("pause")

start_time=time.time()

try:

for filePath in excelList:

df=pd.read_excel(filePath,header=None)

print("正在读取"+filePath+"文件")

new_df=pd.concat([new_df,df],axis=0,ignore_index=True)

outputPath="excel_output.xlsx"

print("文件正在拼接,请等待.....")

writer=pd.ExcelWriter(outputPath)

new_df.to_excel(writer,'Sheet1',index=False,header=None)

print("合并文件正在保存,请等待....")

writer.save()

end_time=time.time()

use_time=end_time-start_time

print("文件合并成功,共耗时"+str(round(use_time,2))+"秒,输出文件为“excel_output.xlsx”")

os.system("pause")

except Exception as e:

print(str(e)+"\n"+"合并失败,“excel_output.xlsx”文件正在使用,请关闭它!再试。")

python处理excel文件合并问题相关推荐

  1. 如何利用python整合excel_Python将多个excel文件合并为一个文件

    Python将多个excel文件合并为一个文件 这篇文章主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 思路 利用python x ...

  2. python处理多个excel文件-Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  3. python处理多个excel文件-python多个excel文件合并成一个sheet

    运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...

  4. python合并两个excel文件_Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  5. 利用Python将多个excel文件合并为一个文件

    利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...

  6. python 整合excel_Python将多个excel文件合并为一个文件

    # -*- coding: utf-8 -*- #将多个Excel文件合并成一个 import xlrd import xlsxwriter #打开一个excel文件 def open_xls(fil ...

  7. Python实现多个excel文件合并源码及打包exe程序

    ##以下是源码filecombine.py,比较简单,有相应说明,也是结合别的代码自己修改的,用到的包需要提前装好. # -*- coding: utf-8 -*- import xlrd impor ...

  8. 怎么用python处理excel文件-用python处理excel文件有多轻松?工作从未如此简单

    最近需要频繁读写 excel 文件,想通过程序对 excel 文件进行自动化处理,发现使用 python 的 openpyxl 库进行 excel 文件读写实在太方便了,结构清晰,操作简单.本文对 o ...

  9. 使用Python获取Excel文件中单元格公式的计算结果

    假设有如下Excel文件,其中第二个WorkSheet中数据如下: 其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下: 代码运行结果: ----------相关阅读---------- 1 ...

  10. 用Python处理Excel文件

    用Python读写Excel文件 四种python处理excel模块PK 我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同.   XlsxWriter xlrd ...

最新文章

  1. python arp扫描_基于python的局域网arp扫描
  2. Android六大布局 LinearLayout(线性布局)
  3. qt在表格中如何画线_如何把EXCEL的表格完整的粘贴到WORD文件中
  4. mysql代码生成器_MYSQL语句生成器
  5. Windows 程序员必备的知识和工具
  6. P2339 提交作业usaco
  7. 【django】模型
  8. Flink 在又拍云日志批处理中的实践
  9. eclipse juno_放弃Eclipse Juno
  10. 摆脱加卡他卡_如何通过三个简单的步骤摆脱“故事卡地狱”。
  11. vscode Go 1.11.4 编译错误 need Delve built by Go 1.11 or later
  12. ES6新语法--解构赋值
  13. 小熊的人生回忆(九)
  14. realm android,Realm for Android快速入门教程
  15. scrapy commandline
  16. 遇到系统问题,先看OS再看CPU
  17. 微型计算机系统中传感器的作用,一文读懂传感器原理、作用及技术特点
  18. 数学之美系列 1.3w字精简版阅读笔记
  19. default、mms、supl、dun、hipri接入点类型的区别
  20. 【基础篇】————28、横向渗透

热门文章

  1. 关于activity转场动画makeSceneTransitionAnimation没效果的问题的解决办法
  2. OJ 里面的 G++ 和C++ 到底有什么区别, 为什么有时候G++能过,C++不能过,而有时候C++能过,G++不能过?
  3. 【Excel】五种方法添加打勾方框(其他符号差不多)
  4. 解决鼠标右键中没有新建选项
  5. 坦克世界怎么显示服务器准心,坦克世界8.0环境设置详细教程
  6. js不同地图坐标系经纬度转换(同一经纬度,硬件/谷歌转高德地图;经纬度查询)
  7. java里面getsource_java e.getsource
  8. 家长如何使自己的孩子轻松快乐地学好数学和英语?
  9. 计算机程序班搞笑口号,集搞笑自创的运动会口号?
  10. 前端开发基本工作内容有哪些?