众所周知Excel文件格式转换可以通过“另存为”的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便。
显然利用程序对xls和xlsx格式批量互相转换就十分便捷。
工具:python解释器,pywin32(调用Excel的api)
程序有2种转换方式:批量将xls转为xlsx,批量将xlsx转为xls
代码如下:
import win32com.client as win32 # 需安装pywin32import os.pathimport globexcel = win32.gencache.EnsureDispatch('Excel.Application')def xls2xlsx(xls_path, xlsx_path): # xls_path参数为待转换的xls文件所在文件夹 # xlsx_path参数为转换完成的xlsx文件保存文件夹 # 当xlsx保存文件夹存在同名原xls时,会弹窗提示是否替换,建议保存至空文件夹 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转换完成')def xlsx2xls(xlsx_path, xls_path): # xlsx_path参数为待转换的xlsx文件所在文件夹 # xls_path参数为转换完成的xls文件保存文件夹 # 当xls保存文件夹存在同名原xlsx时,会弹窗提示是否替换,建议保存至空文件夹 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转换完成')if __name__ == '__main__': xls_path = r'E:\测试\Excel\xls' xlsx_path = r'E:\测试\Excel\xlsx' xls2xlsx(xls_path, xlsx_path) #xlsx2xls(xlsx_path, xls_path)
待转换文件:
转换完成文件:
很惭愧,做了一点微小的工作,谢谢大家!