往北向南 发表于 2020-5-15 10:03:24

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

本帖最后由 往北向南 于 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)
------------------------------------------------------------------------------------------------------------------

wuqramy 发表于 2020-5-15 10:07:52

用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式

往北向南 发表于 2020-5-15 10:10:44

wuqramy 发表于 2020-5-15 10:07
用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式

请问这个需要怎么解决呢,还有怎么会出现这个用户警告的{:5_94:}

Twilight6 发表于 2020-5-15 10:13:09

不适用这个打开方式把

Twilight6 发表于 2020-5-15 10:18:15

wb._named_styles['Normal'].number_format = FORMAT_TEXT
加上这个代码试试?

往北向南 发表于 2020-5-15 10:30:20

Twilight6 发表于 2020-5-15 10:18
加上这个代码试试?

1、这个打开方式应该没问题的吧
2、这行代码插在哪一列{:5_109:}

Twilight6 发表于 2020-5-15 10:38:44

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

前面几行,写第四行呗?试试

往北向南 发表于 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

Twilight6 发表于 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)

往北向南 发表于 2020-5-15 10:59:04

Twilight6 发表于 2020-5-15 10:49


还是有错误呀
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'

Twilight6 发表于 2020-5-15 11:07:37

往北向南 发表于 2020-5-15 10:59
还是有错误呀

好吧抱歉 我也不懂了{:10_245:}

往北向南 发表于 2020-5-15 11:08:36

Twilight6 发表于 2020-5-15 11:07
好吧抱歉 我也不懂了

还是谢谢您这边帮忙{:5_110:}

Twilight6 发表于 2020-5-15 11:09:39

往北向南 发表于 2020-5-15 11:08
还是谢谢您这边帮忙

没事{:10_264:}

_2_ 发表于 2020-5-15 11:17:20

本帖最后由 _2_ 于 2020-5-15 11:57 编辑

往北向南 发表于 2020-5-15 10:10
请问这个需要怎么解决呢,还有怎么会出现这个用户警告的

换几个 xlsx 试试
或者是因为文件名是中文的原因(也许)?

往北向南 发表于 2020-5-15 11:25:28

_2_ 发表于 2020-5-15 11:17
换几个 xls 试试
或者是因为文件名是中文的原因(也许)?

1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名中文没关系

txxcat 发表于 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就可以了。

_2_ 发表于 2020-5-15 11:58:32

往北向南 发表于 2020-5-15 11:25
1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名 ...

那就是文件名中的空格,但好像问题不大

rsj0315 发表于 2020-5-15 13:18:09

问下楼主,如果表格里边有公式和百分比的value,
写read_only能完全转换成数值吗?

往北向南 发表于 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.

    """

rsj0315 发表于 2020-5-15 14:04:50

往北向南 发表于 2020-5-15 13:59
可以看看这个

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

这样就可以对吗
页: [1] 2
查看完整版本: openpyxl打开文件出现用户告警: UserWarning: Workbook contains no default styl...