2301_77656593 2023-04-22 22:24 采纳率: 20%
浏览 705
已结题

基于pandas导出后缀名为.xls时报错:文件类型:没有xls引擎

基于pandas导出后缀名为.xls时报错:文件类型:没有xls引擎
1.这是什么意思?
2.如何解决?
能帮忙解决下吗,Python小小初学者十分感谢🙏

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-25 02:26
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7465157
    • 这篇博客你也可以参考下:Pandas和xlrd读取xls报错解决方法
    • 除此之外, 这篇博客: xls批量转换为xlsx格式文件中的 方法1:Python pandas库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      使用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代码进行转换。

    • 您还可以看一下 乌云毕力格老师的python之pandas玩转excel表格教程课程中的 18.【把一列数据分割成两列】小节, 巩固相关知识点
    • 以下回答来自chatgpt:

      回答: "没有xls引擎"的报错意味着你未安装支持xls文件的xls引擎,可以通过安装openpyxl或者xlrd来支持xls文件的读取。具体的安装方法可以在终端输入以下命令:

      pip install openpyxl
      pip install xlrd
      

      如果这两个包都安装了,还是出现“没有xls引擎”的报错,可能是Pandas版本不兼容,可以考虑升级Pandas到最新版本。如果还出现问题,请尝试使用to_excel方法导出文件,示例代码可以参考参考资料中的段落1。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月25日
  • 创建了问题 4月22日