基于pandas导出后缀名为.xls时报错:文件类型:没有xls引擎
1.这是什么意思?
2.如何解决?
能帮忙解决下吗,Python小小初学者十分感谢🙏
安装一下pip install xlwt
安装xlrd。或者文件名结尾的xls修改为xlsx看看
不知道你这个问题是否已经解决, 如果还没有解决的话:使用Python pandas库的to_excel方法来另存为xlsx格式。
考虑到Excel文件一般有多个工作表,需要都读出来然后保存。下面直接给出代码:
import glob
import os
import time
import pandas as pd
class excelConvert():
def __init__(self):
self.path = os.getcwd() # 当前工作路径
xlsxdirname = "xlsx"
xlsxpath = os.path.join(self.path, xlsxdirname)
if not os.path.exists(xlsxpath):
print(f"创建文件夹: {xlsxdirname}")
os.makedirs(xlsxpath)
self.xlsxpath = xlsxpath
def batch_convert(self):
xls_files = glob.glob(self.path + "/*.xls")
if len(xls_files) != 0:
print('当前目录下的xls格式文件:')
for file in xls_files:
print(os.path.basename(file))
fname, _ = os.path.splitext(file)
basename = os.path.basename(fname)
xlsxpathname = os.path.join(self.xlsxpath, basename)
self.saveasxlsx(file, xlsxpathname)
else:
print('该目录下无xls格式文件,即将退出...')
time.sleep(2)
os._exit(0)
def saveasxlsx(self, xlspath, xlsxpath):
writer = pd.ExcelWriter(xlsxpath + '.xlsx')
datas = pd.read_excel(xlspath,sheet_name=None)
for sheetname, values in datas.items():
data = pd.DataFrame(values)
data.to_excel(writer, sheet_name=sheetname)
writer.save()
writer.close()
if __name__=='__main__':
excel = excelConvert()
excel.batch_convert()
使用上述代码无法保留原Excel文件中的单元格样式,接下来介绍使用VBA代码进行转换。
回答: "没有xls引擎"的报错意味着你未安装支持xls文件的xls引擎,可以通过安装openpyxl或者xlrd来支持xls文件的读取。具体的安装方法可以在终端输入以下命令:
pip install openpyxl
pip install xlrd
如果这两个包都安装了,还是出现“没有xls引擎”的报错,可能是Pandas版本不兼容,可以考虑升级Pandas到最新版本。如果还出现问题,请尝试使用to_excel方法导出文件,示例代码可以参考参考资料中的段落1。