TypeError: expected <class ‘openpyxl.styles.fills.Fill‘>

通过pandas的read_excel读取xlsx文件出现问题,会报*TypeError: expected <class ‘openpyxl.styles.fills.Fill’>*的错误,
网上文章推荐的所有库openxlsx、pyxlsb、xlrd、libreoffice + unoconv都不行,

最后走通了两个方法
1.通过xlwings库读取,可以解决这个问题(但是不能根据sheet_name选择sheet)

import xlwings as xw
import pandas as pd

wb = xw.Book('收集结果(新).xlsx')  # 打开 Excel 文件
sheet = wb.sheets[1]  # 选择第一个工作表
data = sheet.used_range.value  # 读取所有数据
wb.close()

df = pd.DataFrame(data[1:], columns=data[0])  # 转换为 DataFrame
print(df)

2.通过其他人说的另存为,但其他人都是用手动,我用代码实现了!

原理就是通过代码将原文件另存为

然后读取另存为的文件

import time

import pandas as pd
import win32com.client

# 启动 Excel
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = False  # 不显示 Excel 窗口

# 打开 Excel 文件
wb = excel.Workbooks.Open(r"D:\Desktop\51job_auto\dsa\收集结果(新).xlsx")  # 适用于 .xls 和 .xlsx

# 另存为 a.xlsx(51 表示 xlOpenXMLWorkbook,即 .xlsx 格式)
wb.SaveAs(r"D:\Desktop\51job_auto\dsa\a.xlsx", FileFormat=51)

# 关闭 Excel
wb.Close(False)
excel.Quit()

df = pd.read_excel('a.xlsx')

print(df)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值