处理openpyxl警告:“工作簿不包含默认样式,应用openpyxl的默认样式”

问题描述 投票:0回答:9

我有当前最新版本的 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")

文档没有对此提供太多说明。

有什么方法可以添加选项来避免此警告?

我宁愿不压抑它。

python pandas openpyxl
9个回答
28
投票

我认为

openpyxl
库没有为您提供禁用它的方法。您将需要直接使用
warnings
包。

问题的一个简单且准时的解决方案是:

import warnings

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    myexcelfile = pd.read_excel(easy_payfile, engine="openpyxl")

7
投票

我也有同样的警告。我刚刚将 Excel 文件的工作表名称从“sheet_1”更改为“Sheet1”,然后警告就消失了。我认为 pandas 应该稍后修复这个警告。


7
投票

@ruhanbidart 解决方案比我的更好,因为你只为调用read_excel关闭警告,但如果你有数十次调用

pd.read_excel
,你可以简单地禁用所有警告:

import warnings
warnings.simplefilter("ignore")

我知道这不是一个好的编程习惯,但它可以帮助清理你的输出。


4
投票

df=pd.read_excel("my.xlsx",engine="openpyxl") 
传递引擎参数消除了我的警告。
Default = None
,所以我认为这只是警告你它使用 openpyxl 作为默认样式。


4
投票

这个答案使用的警告过滤器比之前的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')

2
投票

我收到了完全相同的警告,并且无法读取该文件。就我而言,问题出在 Excel 文件中的工作表名称。

初始名称包含

.
(例如:
MDM.TARGET
)我只需将
.
替换为
_
,一切都很好。


2
投票

就我而言,它是工作表名称。从 Sheet0 我将其重命名为 Sheet1


1
投票

在我的情况下,某些列的名称中带有美元符号($)。将“$”替换为“_”解决了问题。


1
投票

就我而言,我只是用 Libreoffice 打开了 excel,然后保存了 excel,没有对其进行任何更改。并且它的工作没有任何问题或警告。我的excel是Trendyol平台图片库中的图片列表。所以我猜这个错误是由代码生成的Excel中缺少某些内容引起的,当我们打开文件并再次保存时,这个缺少的部分就得到了解决。

© www.soinside.com 2019 - 2024. All rights reserved.