鱼C论坛

 找回密码
 立即注册
查看: 23291|回复: 29

openpyxl打开文件出现用户告警: UserWarning: Workbook contains no default styl...

[复制链接]
发表于 2020-5-15 10:03:24 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 往北向南 于 2020-5-15 10:04 编辑

通过openpyxl打开多个文件时出现告警: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")

虽然不影响结果输出,但是查询好久也没找出原因和规避方式,望指教,谢谢
------------------------------------------------------------------------------------------------------------------
# 导入库
import openpyxl
from openpyxl import load_workbook

# 需要合并的文件
file_path = [r'G:\测试数据\DD_20200413_200213775_A2 - 副本.xlsx',
             r'G:\测试数据\D_20200413_200354317_A3.xlsx',
             r'G:\测试数据\D_20200413_195921676_A1 - 副本.xlsx'
             ]

sheet_names = []
for file in file_path:
    wb = openpyxl.load_workbook(file,read_only=True)
    name = wb.sheetnames
    sheet_names.extend(name)
------------------------------------------------------------------------------------------------------------------
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 10:07:52 | 显示全部楼层
用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 10:10:44 | 显示全部楼层
wuqramy 发表于 2020-5-15 10:07
用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式

请问这个需要怎么解决呢,还有怎么会出现这个用户警告的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 10:13:09 | 显示全部楼层
不适用这个打开方式把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 10:18:15 | 显示全部楼层
wb._named_styles['Normal'].number_format = FORMAT_TEXT
加上这个代码试试?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 10:30:20 | 显示全部楼层
Twilight6 发表于 2020-5-15 10:18
加上这个代码试试?

1、这个打开方式应该没问题的吧
2、这行代码插在哪一列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 10:38:44 | 显示全部楼层
往北向南 发表于 2020-5-15 10:30
1、这个打开方式应该没问题的吧
2、这行代码插在哪一列

前面几行,写第四行呗?试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 10:44:45 | 显示全部楼层
Twilight6 发表于 2020-5-15 10:38
前面几行,写第四行呗?试试
# 导入库
import openpyxl
from openpyxl import load_workbook
wb._named_styles['Normal'].number_format = FORMAT_TEXT

# 需要合并的文件
file_path = [r'G:\测试数据\ExternalEUtranTCellTDD_20200413_200213775_A2 - 副本.xlsx',
             r'G:\测试数据\ExternalEUtranTCellTDD_20200413_200354317_A3.xlsx',
             r'G:\测试数据\ExternalEUtranTCellTDD_20200413_195921676_A1 - 副本.xlsx'
             ]

sheet_names = []
for file in file_path:
    wb = openpyxl.load_workbook(file,read_only=True)
    name = wb.sheetnames
    sheet_names.extend(name)

-----------------------------------------------------------------------------
Traceback (most recent call last):
  File "d:/My_Python_PycharmProjects/my-pandas/222.py", line 4, in <module>
    wb._named_styles['Normal'].number_format = FORMAT_TEXT
NameError: name 'FORMAT_TEXT' is not defined

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 10:49:41 | 显示全部楼层
往北向南 发表于 2020-5-15 10:44
-----------------------------------------------------------------------------
# 导入库
import openpyxl
from openpyxl.styles.numbers import FORMAT_TEXT

# 需要合并的文件
file_path = [r'G:\测试数据\ExternalEUtranTCellTDD_20200413_200213775_A2 - 副本.xlsx',
             r'G:\测试数据\ExternalEUtranTCellTDD_20200413_200354317_A3.xlsx',
             r'G:\测试数据\ExternalEUtranTCellTDD_20200413_195921676_A1 - 副本.xlsx'
             ]

sheet_names = []
for file in file_path:
    wb = openpyxl.load_workbook(file, read_only=True)
    wb._named_styles['Normal'].number_format = FORMAT_TEXT
    name = wb.sheetnames
    sheet_names.extend(name)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 10:59:04 | 显示全部楼层

还是有错误呀
Traceback (most recent call last):
  File "d:/My_Python_PycharmProjects/my-pandas/333.py", line 14, in <module>
    wb._named_styles['Normal'].number_format = FORMAT_TEXT
  File "D:\Program Files (x86)\python3.8.2-64\lib\site-packages\openpyxl\styles\named_styles.py", line 182, in __getitem__
    raise KeyError("No named style with the name{0} exists".format(key))
KeyError: 'No named style with the nameNormal exists'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 11:07:37 | 显示全部楼层

好吧  抱歉 我也不懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 11:08:36 | 显示全部楼层
Twilight6 发表于 2020-5-15 11:07
好吧  抱歉 我也不懂了

还是谢谢您这边帮忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 11:09:39 | 显示全部楼层
往北向南 发表于 2020-5-15 11:08
还是谢谢您这边帮忙

没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 11:17:20 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-5-15 11:57 编辑
往北向南 发表于 2020-5-15 10:10
请问这个需要怎么解决呢,还有怎么会出现这个用户警告的


换几个 xlsx 试试
或者是因为文件名是中文的原因(也许)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 11:25:28 | 显示全部楼层
_2_ 发表于 2020-5-15 11:17
换几个 xls 试试
或者是因为文件名是中文的原因(也许)?

1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名中文没关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 11:28:30 | 显示全部楼层
    这是报警,不是报错,翻译过来是:表中包含非默认样式,使用openpyxl默认样式(打开)。这个跟你打开的三个文件的内容有关,你可以手工load_workbook每一个文件,看看是哪个文件会出现报警,然后再看看那个文件里是否包含有特殊的样式、字体。如果还是找不到原因,文件不大的话,打包上传让大家帮忙看看,如果没有权限上传,用百度网盘。
    PS:import openpyxl和from openpyxl import load_workbook只用执行其中一句,因为你后面只用到load_workbook,推荐就用from openpyxl import load_workbook这句,下面的openpyxl.load_workbook就只用写load_workbook就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 11:58:32 From FishC Mobile | 显示全部楼层
往北向南 发表于 2020-5-15 11:25
1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名 ...

那就是文件名中的空格,但好像问题不大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:18:09 | 显示全部楼层
问下楼主,如果表格里边有公式和百分比的value,
写read_only能完全转换成数值吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 13:59:09 | 显示全部楼层
rsj0315 发表于 2020-5-15 13:18
问下楼主,如果表格里边有公式和百分比的value,
写read_only能完全转换成数值吗?

可以看看这个
def load_workbook(filename, read_only=False, keep_vba=KEEP_VBA,
                  data_only=False, keep_links=True):
    """Open the given filename and return the workbook

    :param filename: the path to open or a file-like object
    :type filename: string or a file-like object open in binary mode c.f., :class:`zipfile.ZipFile`

    :param read_only: optimised for reading, content cannot be edited
    :type read_only: bool

    :param keep_vba: preseve vba content (this does NOT mean you can use it)
    :type keep_vba: bool

    :param data_only: controls whether cells with formulae have either the formula (default) or the value stored the last time Excel read the sheet
    :type data_only: bool

    :param keep_links: whether links to external workbooks should be preserved. The default is True
    :type keep_links: bool

    :rtype: :class:`openpyxl.workbook.Workbook`

    .. note::

        When using lazy load, all worksheets will be :class:`openpyxl.worksheet.iter_worksheet.IterableWorksheet`
        and the returned workbook will be read-only.

    """
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 14:04:50 | 显示全部楼层

class:`openpyxl.worksheet.iter_worksheet.IterableWorksheet`
and the returned workbook will be read-only.

这样就可以对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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