python 批量读取xlsx并合并_python合并多个excel表格数据-python如何读取多个excel合并到一个excel中...
python如何讀取多個excel合并到一個excel中
思路
利用python xlrd包讀取excle文件,然后將文件內容存入一個列表中,再利用xlsxwriter將內容寫入到一個新的excel文件中。
完整代碼
# -*- coding: utf-8 -*-#將多個Excel文件合并成一個import xlrdimport xlsxwriter#打開一個excel文件def open_xls(file):
fh=xlrd.open_workbook(file) ? ?return fh#獲取excel中所有的sheet表def getsheet(fh):
return fh.sheets()#獲取sheet表的行數def getnrows(fh,sheet):
table=fh.sheets()[sheet] ? ?return table.nrows#讀取文件內容并返回行內容def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows ? ?for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata) ? ?return datavalue#獲取sheet表的個數def getshnum(fh):
x=0
sh=getsheet(fh) ? ?for sheet in sh:
x =1
return xif __name__=='__main__': ? ?#定義要合并的excel文件列表
allxls=['F:/test/excel1.xlsx','F:/test/excel2.xlsx'] ? ?#存儲所有讀取的結果
datavalue=[] ? ?for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh) ? ? ? ?for shnum in range(x):
print("正在讀取文件:" str(fl) "的第" str(shnum) "個sheet表的內容...")
rvalue=getFilect(fl,shnum) ? ?#定義最終合并后生成的新文件
endfile='F:/test/excel3.xlsx'
wb1=xlsxwriter.Workbook(endfile) ? ?#創建一個sheet工作對象
ws=wb1.add_worksheet() ? ?for a in range(len(rvalue)): ? ? ? ?for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
源文件excel1:
源文件excel2:
運行結果:
合并后的excel3:
python如何根據前兩列信息合并多個excel?
通過輸出結果可以發現,value被pack之后,轉化為了一段二進制字節串,而unpack可以把該字節串再轉換回一個元組,但是值得注意的是對于float的精度發生了改變,這是由一些比如操作系統等客觀因素所決定的。
打包之后的數據所占用的字節數與C語言中的struct十分相似。
python怎么合并excel的兩個sheet并去重?
思路
利用python xlrd包讀取excle文件,然后將文件內容存入一個列表中,再利用xlsxwriter將內容寫入到一個新的excel文件中。
完整代碼
# -*- coding: utf-8 -*-#將多個Excel文件合并成一個import xlrdimport xlsxwriter#打開一個excel文件def open_xls(file):
fh=xlrd.open_workbook(file) ? ?return fh#獲取excel中所有的sheet表def getsheet(fh):
return fh.sheets()#獲取sheet表的行數def getnrows(fh,sheet):
table=fh.sheets()[sheet] ? ?return table.nrows#讀取文件內容并返回行內容def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows ? ?for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata) ? ?return datavalue#獲取sheet表的個數def getshnum(fh):
x=0
sh=getsheet(fh) ? ?for sheet in sh:
x =1
return xif __name__=='__main__': ? ?#定義要合并的excel文件列表
allxls=['F:/test/excel1.xlsx','F:/test/excel2.xlsx'] ? ?#存儲所有讀取的結果
datavalue=[] ? ?for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh) ? ? ? ?for shnum in range(x):
print("正在讀取文件:" str(fl) "的第" str(shnum) "個sheet表的內容...")
rvalue=getFilect(fl,shnum) ? ?#定義最終合并后生成的新文件
endfile='F:/test/excel3.xlsx'
wb1=xlsxwriter.Workbook(endfile) ? ?#創建一個sheet工作對象
ws=wb1.add_worksheet() ? ?for a in range(len(rvalue)): ? ? ? ?for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
源文件excel1:
源文件excel2:
運行結果:
合并后的excel3:
用python把EXCEL中的幾組數據按順序組合
可以采用一些操作Excel的模塊去實現,比如xlrd、xlwt、openpyxl、xlsxwriter等模塊。xlrd模塊主要用于讀取Excel表,xlwt與xlsxwriter模塊主要用于將數據寫入表中,兩個模塊任選其一即可,但是xlwt與xlsxwriter模塊不支持修改表,所以在信息追加的時候會較麻煩,有些朋友可能這個地方遇到了很大的問題,其實這個問題至少有兩種思路解決:
A、換成其他模塊,比如openpyxl等,這個模塊實現起來會相對簡單一些,比如目前已經收到的蘇wisdom同學采用的就是這種方法,值得表揚,所以以下方法1會參照蘇wisdom同學的答案。此外,截止至目前為止『歹ピ№ㄕ』同學、微雨同學、黃夢穎同學已經提交第二次作業,一并表揚。
B、仍然使用xlwt與xlsxwriter等模塊,但是先將每次讀取的信息存儲到list(列表)中,然后,最后一次寫入。這一種方式稍微復雜一些,所以老師在方法2中采用這種方式去寫,目的是給大家一個解決方案的參考,有更優的方案可以隨時郵箱反饋。
此外,還有一個難點,即一個表格中有多個sheet,我們希望能夠用程序自動獲取這多個sheet,然后將各sheet中的內容一并寫入到最終表格中,目前答案中暫時沒有看到解決這個問題,如果大家能解決這個問題,是極好的。各位同學可以參考老師的第二種方法,第二種方式中,考慮了多個sheet的問題,各位也可以對程序進行優化。
用Python導出工程文件兩個子頁里的數據成為兩個exc...
思路
利用python xlrd包讀取excle文件,然后將文件內容存入一個列表中,再利用xlsxwriter將內容寫入到一個新的excel文件中。
完整代碼
# -*- coding: utf-8 -*-#將多個Excel文件合并成一個import xlrdimport xlsxwriter#打開一個excel文件def open_xls(file):
fh=xlrd.open_workbook(file) ? ?return fh#獲取excel中所有的sheet表def getsheet(fh):
return fh.sheets()#獲取sheet表的行數def getnrows(fh,sheet):
table=fh.sheets()[sheet] ? ?return table.nrows#讀取文件內容并返回行內容def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows ? ?for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata) ? ?return datavalue#獲取sheet表的個數def getshnum(fh):
x=0
sh=getsheet(fh) ? ?for sheet in sh:
x =1
return xif __name__=='__main__': ? ?#定義要合并的excel文件列表
allxls=['F:/test/excel1.xlsx','F:/test/excel2.xlsx'] ? ?#存儲所有讀取的結果
datavalue=[] ? ?for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh) ? ? ? ?for shnum in range(x):
print("正在讀取文件:" str(fl) "的第" str(shnum) "個sheet表的內容...")
rvalue=getFilect(fl,shnum) ? ?#定義最終合并后生成的新文件
endfile='F:/test/excel3.xlsx'
wb1=xlsxwriter.Workbook(endfile) ? ?#創建一個sheet工作對象
ws=wb1.add_worksheet() ? ?for a in range(len(rvalue)): ? ? ? ?for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
源文件excel1:
源文件excel2:
運行結果:
合并后的excel3:
總結
以上是生活随笔為你收集整理的python 批量读取xlsx并合并_python合并多个excel表格数据-python如何读取多个excel合并到一个excel中...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抓取一台电脑linux,教程方法;用来获
- 下一篇: java 关键字 sizeof_Java