冰菲 发表于 2025-7-4 16:17:24

Python 如何处理Excel文件,如果xls格式改为xlsx,其他默认不变

if file_name.endswith('.xls'):
                df=pd.read_excel(file_name)   
                df.to_excel(f"{folder}.xlsx",index=False)   

Python 如何处理Excel文件,如果xls格式改为xlsx,其他默认不变
已经写完xls改为xlsx了,但是文件里面如果有xlsx格式运行就会报错,如何让xlsx格式不变,还能运行

FishC 发表于 2025-7-4 16:20:05

在Python中处理Excel文件时,若需保留`.xlsx`文件不变且仅转换`.xls`文件,需明确区分两种格式。以下是优化后的代码方案:

解决方案:
1. 使用条件判断区分`.xls`和`.xlsx`文件
2. 仅对`.xls`执行转换操作,`.xlsx`直接读取
3. 避免重复读取文件(提升效率)


import pandas as pd

def process_excel(file_path):
    if file_path.lower().endswith('.xls'):
      # 读取.xls并转换为.xlsx
      df = pd.read_excel(file_path)
      new_path = file_path.rsplit('.', 1) + '.xlsx'
      df.to_excel(new_path, index=False)
      print(f"已转换: {file_path} -> {new_path}")
      return df# 直接返回已读取的数据
   
    elif file_path.lower().endswith('.xlsx'):
      # 直接读取.xlsx文件
      return pd.read_excel(file_path)
   
    else:
      raise ValueError("仅支持.xls或.xlsx文件")

# 使用示例
file_name = "your_file.xls"# 或.xlsx
data_frame = process_excel(file_name)
# 后续操作...


关键点说明:
1. 通过lower().endswith()兼容大小写扩展名
2. rsplit('.',1) 确保正确替换扩展名(即使文件名中含有点)
3. 转换`.xls`时:
   - 读取数据到DataFrame
   - 生成新路径(如data.xls → data.xlsx)
   - 保存时index=False避免额外索引列
4. 直接返回DataFrame对象,避免重复读取文件

此方案能正确处理两种格式,且不会影响现有`.xlsx`文件运行。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: Python 如何处理Excel文件,如果xls格式改为xlsx,其他默认不变