通过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)