python处理excel文件合并问题
方法一:
使用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文件合并问题相关推荐
- 如何利用python整合excel_Python将多个excel文件合并为一个文件
Python将多个excel文件合并为一个文件 这篇文章主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 思路 利用python x ...
- python处理多个excel文件-Python将多个excel文件合并为一个文件
利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...
- python处理多个excel文件-python多个excel文件合并成一个sheet
运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...
- python合并两个excel文件_Python将多个excel文件合并为一个文件
利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...
- 利用Python将多个excel文件合并为一个文件
利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中 ...
- python 整合excel_Python将多个excel文件合并为一个文件
# -*- coding: utf-8 -*- #将多个Excel文件合并成一个 import xlrd import xlsxwriter #打开一个excel文件 def open_xls(fil ...
- Python实现多个excel文件合并源码及打包exe程序
##以下是源码filecombine.py,比较简单,有相应说明,也是结合别的代码自己修改的,用到的包需要提前装好. # -*- coding: utf-8 -*- import xlrd impor ...
- 怎么用python处理excel文件-用python处理excel文件有多轻松?工作从未如此简单
最近需要频繁读写 excel 文件,想通过程序对 excel 文件进行自动化处理,发现使用 python 的 openpyxl 库进行 excel 文件读写实在太方便了,结构清晰,操作简单.本文对 o ...
- 使用Python获取Excel文件中单元格公式的计算结果
假设有如下Excel文件,其中第二个WorkSheet中数据如下: 其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下: 代码运行结果: ----------相关阅读---------- 1 ...
- 用Python处理Excel文件
用Python读写Excel文件 四种python处理excel模块PK 我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同. XlsxWriter xlrd ...
最新文章
- python arp扫描_基于python的局域网arp扫描
- Android六大布局 LinearLayout(线性布局)
- qt在表格中如何画线_如何把EXCEL的表格完整的粘贴到WORD文件中
- mysql代码生成器_MYSQL语句生成器
- Windows 程序员必备的知识和工具
- P2339 提交作业usaco
- 【django】模型
- Flink 在又拍云日志批处理中的实践
- eclipse juno_放弃Eclipse Juno
- 摆脱加卡他卡_如何通过三个简单的步骤摆脱“故事卡地狱”。
- vscode Go 1.11.4 编译错误 need Delve built by Go 1.11 or later
- ES6新语法--解构赋值
- 小熊的人生回忆(九)
- realm android,Realm for Android快速入门教程
- scrapy commandline
- 遇到系统问题,先看OS再看CPU
- 微型计算机系统中传感器的作用,一文读懂传感器原理、作用及技术特点
- 数学之美系列 1.3w字精简版阅读笔记
- default、mms、supl、dun、hipri接入点类型的区别
- 【基础篇】————28、横向渗透
热门文章
- 关于activity转场动画makeSceneTransitionAnimation没效果的问题的解决办法
- OJ 里面的 G++ 和C++ 到底有什么区别, 为什么有时候G++能过,C++不能过,而有时候C++能过,G++不能过?
- 【Excel】五种方法添加打勾方框(其他符号差不多)
- 解决鼠标右键中没有新建选项
- 坦克世界怎么显示服务器准心,坦克世界8.0环境设置详细教程
- js不同地图坐标系经纬度转换(同一经纬度,硬件/谷歌转高德地图;经纬度查询)
- java里面getsource_java e.getsource
- 家长如何使自己的孩子轻松快乐地学好数学和英语?
- 计算机程序班搞笑口号,集搞笑自创的运动会口号?
- 前端开发基本工作内容有哪些?