使用Python實(shí)現(xiàn)XLS和XLSX之間的相互轉(zhuǎn)換
Python庫安裝
所需Python庫 - Spire.XLS for Python。該P(yáng)ython庫支持多種對Excel文檔的編程操作,包括創(chuàng)建、讀取、編輯、轉(zhuǎn)換等。可以通過此鏈接下載產(chǎn)品包后再從本地路徑安裝,也可以直接使用以下pip命令安裝:
pip install Spire.XLS
XLS格式與XLSX格式互轉(zhuǎn)
XLSX格式因其基于XML的結(jié)構(gòu)、更強(qiáng)大的功能支持和安全性,成為現(xiàn)代Excel文件處理的首選格式。而XLS格式則因其在較舊版本的Excel中的兼容性和特定功能的使用而仍有其特定的應(yīng)用場景。
要使用Python在這兩種格式件實(shí)現(xiàn)靈活轉(zhuǎn)換,參考以下步驟:
- 創(chuàng)建 Workbook 工作簿對象;
- 使用 LoadFromFile() 方法加載 .xls 或 .xlsx文件;
- 使用 SaveToFile(fileName, version) 方法實(shí)現(xiàn)轉(zhuǎn)換。
代碼示例如下:
Python 將XLS轉(zhuǎn)為XLSX
from spire.xls import * from spire.xls.common import * # 加載XLSX文件 workbook = Workbook() workbook.LoadFromFile("示例.xlsx") # 將XLSX文件另存為XLS格式 workbook.SaveToFile("Xlsx轉(zhuǎn)Xls.xls", ExcelVersion.Version97to2003) workbook.Dispose()
Python 將XLSX轉(zhuǎn)為XLS
from spire.xls import * from spire.xls.common import * # 加載XLS文件 workbook = Workbook() workbook.LoadFromFile("示例.xls") # 將XLS文件另存為XLSX格式 workbook.SaveToFile("Xls轉(zhuǎn)Xlsx.xlsx", ExcelVersion.Version2016) workbook.Dispose()
拓展:實(shí)現(xiàn)Excel文件xls與xlsx格式批量互相轉(zhuǎn)換
python實(shí)現(xiàn)方法
將文件夾中的所有xls或xlsx文件轉(zhuǎn)換為xlsx或xls文件
import win32com.client as win32 # 需安裝pywin32 import os.path import glob excel = win32.gencache.EnsureDispatch('Excel.Application') #簡易使用方法 #filename = r'E:\xlsx\1.xls' #wb = excel.Workbooks.Open(filename) #wb.SaveAs(filename+'x', FileFormat=51) #FileFormat=51 是 .xlsx 的擴(kuò)展 #wb.Close() #FileFormat=56 是 .xls 的擴(kuò)展 #excel.Application.Quit() def xls2xlsx(xls_path, xlsx_path): # xls_path參數(shù)為待轉(zhuǎn)換的xls文件所在文件夾 # xlsx_path參數(shù)為轉(zhuǎn)換完成的xlsx文件保存文件夾 # 當(dāng)xlsx保存文件夾存在同名原xls時(shí),會(huì)彈窗提示是否替換,建議保存至空文件夾? path_list = glob.glob(xls_path + '\\*.xls') # 獲取文件夾下所有xls for file in path_list: filename = os.path.basename(file).replace('.xls', '.xlsx') # 獲取文件名 wb = excel.Workbooks.Open(file) wb.SaveAs(xlsx_path + '\\' + filename, FileFormat=51) # xlsx為51 wb.Close() excel.Application.Quit() print('xls2xlsx轉(zhuǎn)換完成') def xlsx2xls(xlsx_path, xls_path): # xlsx_path參數(shù)為待轉(zhuǎn)換的xlsx文件所在文件夾 # xls_path參數(shù)為轉(zhuǎn)換完成的xls文件保存文件夾 # 當(dāng)xls保存文件夾存在同名原xlsx時(shí),會(huì)彈窗提示是否替換,建議保存至空文件夾? path_list = glob.glob(xlsx_path + '\\*.xlsx') # 獲取文件夾下所有xlsx for file in path_list: filename = os.path.basename(file).replace('.xlsx', '.xls') # 獲取文件名 wb = excel.Workbooks.Open(file) wb.SaveAs(xls_path + '\\' + filename, FileFormat=56) # xls為56 wb.Close() excel.Application.Quit() print('xlsx2xls轉(zhuǎn)換完成') if __name__ == '__main__': xls_path = r'E:\xlsx\xls' xlsx_path = r'E:\xlsx\xlsx' xls2xlsx(xls_path, xlsx_path) #xlsx2xls(xlsx_path, xls_path)
VBA實(shí)現(xiàn)方法
將文件夾中的所有xls或xlsx文件轉(zhuǎn)換為xlsx或xls文件;保存時(shí)如果存在同名文件,則會(huì)覆蓋
Function xls2xlsx(xls_path$, save_path$) '將xls_path文件夾中所有xls文件轉(zhuǎn)為xlsx格式,保存至save_path文件夾;注意同名覆蓋 Dim fso As Object, wb As Workbook, save_file$ Application.ScreenUpdating = False '關(guān)閉屏幕更新,加快程序運(yùn)行 Application.DisplayAlerts = False '不顯示警告信息 Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(save_path) Then fso.CreateFolder (save_path) '創(chuàng)建文件夾 For Each f In fso.GetFolder(xls_path).Files '遍歷文件夾里文件 If fso.GetExtensionName(f.Name) = "xls" Then save_file = save_path & "\" & f.Name & "x" '保存文件全名(文件路徑、文件名、擴(kuò)展名) Set wb = Workbooks.Open(f) wb.SaveAs filename:=save_file, FileFormat:=xlOpenXMLWorkbook wb.Close (False) End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Function Function xlsx2xls(xlsx_path$, save_path$) '將xlsx_path文件夾中所有xlsx文件轉(zhuǎn)為xls格式,保存至save_path文件夾;注意同名覆蓋 Dim fso As Object, wb As Workbook, save_file$ Application.ScreenUpdating = False '關(guān)閉屏幕更新,加快程序運(yùn)行 Application.DisplayAlerts = False '不顯示警告信息 Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(save_path) Then fso.CreateFolder (save_path) '創(chuàng)建文件夾 For Each f In fso.GetFolder(xlsx_path).Files '遍歷文件夾里文件 If fso.GetExtensionName(f.Name) = "xlsx" Then save_file = save_path & "\" & fso.GetBaseName(f.Name) & ".xls" '保存文件全名(文件路徑、文件名、擴(kuò)展名) Set wb = Workbooks.Open(f) wb.SaveAs filename:=save_file, FileFormat:=xlExcel8 wb.Close (False) End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Function Private Sub xls和xlsx轉(zhuǎn)換測試() Dim file_path$, save_path$ file_path = "E:\測試\xls" save_path = "E:\測試\xlsx" a = xls2xlsx(file_path, save_path) '2種調(diào)用方式 ' Call xlsx2xls(save_path, file_path) End Sub
以上就是使用Python實(shí)現(xiàn)XLS和XLSX之間的相互轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Python XLS和XLSX相互轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法,涉及Python collections模塊中的Counter類相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-03-03Python實(shí)現(xiàn)壓縮文件夾與解壓縮zip文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)壓縮文件夾與解壓縮zip文件的方法,涉及Python使用zipfile模塊進(jìn)行zip文件壓縮與解壓縮相關(guān)操作技巧,需要的朋友可以參考下2018-09-09Python多任務(wù)版靜態(tài)Web服務(wù)器實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Python靜態(tài)Web服務(wù)器多任務(wù)版實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06tkinter高級布局之PanedWindow和notebook詳解
本文主要介紹了tkinter中的兩種布局控件,分別是可以動(dòng)態(tài)劃分子控件的PanedWindow,和提供了選項(xiàng)卡工具的notebook,感興趣的小伙伴可以學(xué)習(xí)一下2023-08-08Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能入門教程
這篇文章主要介紹了Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能,結(jié)合實(shí)例形式分析了Python使用pyCUDA進(jìn)行GPU加速并行計(jì)算的原理與相關(guān)實(shí)現(xiàn)操作技巧,需要的朋友可以參考下2018-06-06Tensorflow 如何從checkpoint文件中加載變量名和變量值
這篇文章主要介紹了Tensorflow 如何從checkpoint文件中加載變量名和變量值的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05