我有当前最新版本的 pandas、openpyxl、xlrd。
openpyxl:3.0.6.
熊猫:1.2.2.
xlrd:2.0.1.
我有一个生成的 excel xlsx- 文件(从网络应用程序导出)。
我在 pandas 中读到的:
myexcelfile = pd.read_excel(easy_payfile, engine="openpyxl")
一切顺利,我可以成功读取文件。
但我确实收到警告:
/Users/*******/projects/environments/venv/lib/python3.8/site-packages/openpyxl/styles/stylesheet.py:214: UserWarning: Workbook contains no default style, apply openpyxl's default
warn("Workbook contains no default style, apply openpyxl's default")
文档没有对此提供太多说明。
有什么方法可以添加选项来避免此警告?
我宁愿不压抑它。
我认为
openpyxl
库没有为您提供禁用它的方法。您将需要直接使用 warnings
包。
问题的一个简单且准时的解决方案是:
import warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore")
myexcelfile = pd.read_excel(easy_payfile, engine="openpyxl")
我也有同样的警告。我刚刚将 Excel 文件的工作表名称从“sheet_1”更改为“Sheet1”,然后警告就消失了。我认为 pandas 应该稍后修复这个警告。
@ruhanbidart 解决方案比我的更好,因为你只为调用read_excel关闭警告,但如果你有数十次调用
pd.read_excel
,你可以简单地禁用所有警告:
import warnings
warnings.simplefilter("ignore")
我知道这不是一个好的编程习惯,但它可以帮助清理你的输出。
df=pd.read_excel("my.xlsx",engine="openpyxl")
传递引擎参数消除了我的警告。 Default = None
,所以我认为这只是警告你它使用 openpyxl 作为默认样式。
这个答案使用的警告过滤器比之前的ruhanbidart的答案要窄得多。特别是,它使用
category
和 module
条件来避免意外抑制任何不相关的警告。
import re
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=UserWarning, module=re.escape('openpyxl.styles.stylesheet'))
df = pd.read_excel(input_path, engine='openpyxl')
我收到了完全相同的警告,并且无法读取该文件。就我而言,问题出在 Excel 文件中的工作表名称。
初始名称包含
.
(例如:MDM.TARGET
)我只需将 .
替换为 _
,一切都很好。
就我而言,它是工作表名称。从 Sheet0 我将其重命名为 Sheet1
在我的情况下,某些列的名称中带有美元符号($)。将“$”替换为“_”解决了问题。
就我而言,我只是用 Libreoffice 打开了 excel,然后保存了 excel,没有对其进行任何更改。并且它的工作没有任何问题或警告。我的excel是Trendyol平台图片库中的图片列表。所以我猜这个错误是由代码生成的Excel中缺少某些内容引起的,当我们打开文件并再次保存时,这个缺少的部分就得到了解决。