鱼C论坛

 找回密码
 立即注册
查看: 37|回复: 5

[已解决]pycharm报警告要怎么解决

[复制链接]
发表于 8 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import os
  2. from openpyxl import load_workbook

  3. # 1.获取work book对象
  4. file_path = os.path.join(r'25一建考点.xlsx')
  5. work_book_object = load_workbook(r'25一建考点.xlsx')

  6. # 2.读取所有sheet的名字
  7. data_list = work_book_object.sheetnames
  8. print(data_list)
复制代码

运行这个代码pycharm会报C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\openpyxl\worksheet\_reader.py:329: UserWarning: Conditional Formatting extension is not supported and will be removed
  warn(msg)这个警告信息  要怎么解决?
最佳答案
8 小时前
警告信息提示您的 Excel 文件中包含条件格式,但 openpyxl 库不完全支持此功能,因此会显示警告。这通常不会影响读取工作表名称等基本操作,但如果您想消除警告,可以尝试以下方法:

  • 忽略警告:如果不介意控制台输出警告,可以不做处理,代码功能正常。
  • 抑制警告:在代码中添加警告过滤,避免显示该警告。
  • 修改 Excel 文件:手动移除文件中的条件格式(如果不需保留)。


推荐使用抑制警告的方法,只需在代码开头添加几行即可。修改后的代码如下:


  1. import os
  2. import warnings
  3. from openpyxl import load_workbook

  4. # 抑制来自 openpyxl 的 UserWarning 警告
  5. warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')

  6. # 1.获取work book对象
  7. file_path = os.path.join(r'25一建考点.xlsx')
  8. work_book_object = load_workbook(r'25一建考点.xlsx')

  9. # 2.读取所有sheet的名字
  10. data_list = work_book_object.sheetnames
  11. print(data_list)
复制代码


如果希望更精确地只抑制关于条件格式的警告,可以使用以下过滤条件替换上面的 warnings.filterwarnings 行:

warnings.filterwarnings('ignore', message="Conditional Formatting extension is not supported")

这样修改后,警告将不再显示,而代码功能保持不变。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 8 小时前 | 显示全部楼层    本楼为最佳答案   
警告信息提示您的 Excel 文件中包含条件格式,但 openpyxl 库不完全支持此功能,因此会显示警告。这通常不会影响读取工作表名称等基本操作,但如果您想消除警告,可以尝试以下方法:

  • 忽略警告:如果不介意控制台输出警告,可以不做处理,代码功能正常。
  • 抑制警告:在代码中添加警告过滤,避免显示该警告。
  • 修改 Excel 文件:手动移除文件中的条件格式(如果不需保留)。


推荐使用抑制警告的方法,只需在代码开头添加几行即可。修改后的代码如下:


  1. import os
  2. import warnings
  3. from openpyxl import load_workbook

  4. # 抑制来自 openpyxl 的 UserWarning 警告
  5. warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')

  6. # 1.获取work book对象
  7. file_path = os.path.join(r'25一建考点.xlsx')
  8. work_book_object = load_workbook(r'25一建考点.xlsx')

  9. # 2.读取所有sheet的名字
  10. data_list = work_book_object.sheetnames
  11. print(data_list)
复制代码


如果希望更精确地只抑制关于条件格式的警告,可以使用以下过滤条件替换上面的 warnings.filterwarnings 行:

warnings.filterwarnings('ignore', message="Conditional Formatting extension is not supported")

这样修改后,警告将不再显示,而代码功能保持不变。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 8 小时前 | 显示全部楼层
这个警告是因为excel文件中包含有条件格式所以才产生的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 8 小时前 | 显示全部楼层
735468682 发表于 2026-01-18 10:37
这个警告是因为excel文件中包含有条件格式所以才产生 ...


是的,您理解得非常正确。

这个警告产生的原因,正是您的 Excel 文件 25一建考点.xlsx 中包含了一个或多个“条件格式”规则。

这个警告的来源和含义如下:

1.  原因:文件中的“条件格式”
    您可能在该 Excel 文件中设置过类似“将数值大于90的单元格标红”或“用数据条/色阶显示数据”这样的规则。这些都属于条件格式。

2.  库的限制:openpyxl 的“只读”支持
    openpyxl 库可以成功读取带有条件格式的文件结构(因此您的代码能正常运行,打印出工作表名),但它无法在内存中完整解析或重现这些条件格式规则的所有细节

3.  库的处理方式:移除不支持的扩展
    为了避免在后续操作中出现错误或数据不一致,当 openpyxl 在读取文件时遇到这些它无法完全支持的特性,它会选择主动丢弃(移除)这部分信息,并向开发者发出警告:“嘿,我发现了一个我处理不了的东西,为了安全起见,我已经把它扔掉了哦。”

总结来说:
  • 警告本身不影响您当前“读取工作表名称”的操作。
  • 它是一个“提示性”警告而非“错误”,代码会继续执行。
  • 如果您后续用 openpyxl 修改并保存这个工作簿,原文件中的条件格式规则可能会丢失。
  • 如果您需要的只是读取单元格数据、工作表名称等基础信息,完全可以放心地使用上面提供的 warnings.filterwarnings('ignore') 方法来隐藏这个警告。


所以,您的判断完全正确。这个警告就是文件中的条件格式触发的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 小时前 | 显示全部楼层
那有没有能够支持解析这些条件格式细节的库   我需要后续修改并保存这个工作簿,并让原文件中的条件格式规则不会丢失
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 小时前 | 显示全部楼层
735468682 发表于 2026-01-18 10:44
那有没有能够支持解析这些条件格式细节的库   我需要 ...


是的,确实有更好的方案可以解决这个问题。如果您需要完整保留条件格式等高级功能,我推荐以下几种方案:

方案一:使用 xlwings(推荐,功能最全)
这个库通过调用本地Excel程序来操作文件,因此能100%保留所有格式和功能。

安装:

  1. pip install xlwings
复制代码


基本使用示例:

  1. import xlwings as xw

  2. # 打开工作簿(确保Excel已安装)
  3. app = xw.App(visible=False)  # 不显示Excel窗口
  4. wb = app.books.open('25一建考点.xlsx')

  5. # 读取所有工作表名称
  6. sheet_names = [sheet.name for sheet in wb.sheets]
  7. print(sheet_names)

  8. # 进行修改操作,例如修改某个单元格
  9. wb.sheets[0].range('A1').value = '新内容'

  10. # 保存并关闭
  11. wb.save()  # 会完整保留所有格式和条件格式
  12. wb.close()
  13. app.quit()
复制代码


优点:
完全支持Excel所有功能,包括条件格式、图表、宏等
读写完全兼容,不会丢失任何格式
缺点:
需要本地安装Excel(Office)
速度相对较慢

方案二:使用 pandas 配合 openpyxl(部分支持)
如果您只需要处理数据,不完全依赖格式,可以用pandas:


  1. import pandas as pd
  2. from openpyxl import load_workbook

  3. # 用pandas读取数据(会忽略格式)
  4. df = pd.read_excel('25一建考点.xlsx', sheet_name=None)

  5. # 查看所有工作表名
  6. print(list(df.keys()))

  7. # 修改数据后,用openpyxl引擎保存
  8. with pd.ExcelWriter('新文件.xlsx', engine='openpyxl') as writer:
  9.     # 先读取原文件的格式
  10.     book = load_workbook('25一建考点.xlsx')
  11.     writer.book = book
  12.     writer.sheets = {ws.title: ws for ws in book.worksheets}
  13.    
  14.     # 将修改后的数据写入
  15.     for sheet_name, df_data in df.items():
  16.         df_data.to_excel(writer, sheet_name=sheet_name, index=False)
  17.    
  18.     writer.save()
复制代码


注意:这种方法可能会丢失一些复杂的条件格式设置。

方案三:win32com(仅限Windows)
如果您在Windows环境下,可以使用这个库:

安装:

  1. pip install pywin32
复制代码


使用示例:

  1. import win32com.client as win32

  2. excel = win32.gencache.EnsureDispatch('Excel.Application')
  3. excel.Visible = False
  4. wb = excel.Workbooks.Open(r'C:\完整路径\25一建考点.xlsx')

  5. # 读取工作表名
  6. sheet_names = [sheet.Name for sheet in wb.Sheets]
  7. print(sheet_names)

  8. # 修改操作...

  9. # 保存并关闭
  10. wb.Save()
  11. wb.Close()
  12. excel.Quit()
复制代码


我的建议:
1. 如果您的环境允许安装Excel,强烈推荐使用 xlwings,它能完美解决问题
2. 如果只是处理数据,不关心格式,可以用pandas配合openpyxl
3. 如果必须在没有Excel的环境下工作,且必须保留条件格式,可以考虑商业库如Aspose.Cells(收费但功能强大)

您可以根据自己的具体需求选择合适的方案。如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-18 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表