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)
------------------------------------------------------------------------------------------------------------------
用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式 wuqramy 发表于 2020-5-15 10:07
用户警告:工作簿不包含默认样式,请应用openpyxl的默认样式
请问这个需要怎么解决呢,还有怎么会出现这个用户警告的{:5_94:} 不适用这个打开方式把 wb._named_styles['Normal'].number_format = FORMAT_TEXT
加上这个代码试试? Twilight6 发表于 2020-5-15 10:18
加上这个代码试试?
1、这个打开方式应该没问题的吧
2、这行代码插在哪一列{:5_109:} 往北向南 发表于 2020-5-15 10:30
1、这个打开方式应该没问题的吧
2、这行代码插在哪一列
前面几行,写第四行呗?试试 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
往北向南 发表于 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) 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' 往北向南 发表于 2020-5-15 10:59
还是有错误呀
好吧抱歉 我也不懂了{:10_245:} Twilight6 发表于 2020-5-15 11:07
好吧抱歉 我也不懂了
还是谢谢您这边帮忙{:5_110:} 往北向南 发表于 2020-5-15 11:08
还是谢谢您这边帮忙
没事{:10_264:} 本帖最后由 _2_ 于 2020-5-15 11:57 编辑
往北向南 发表于 2020-5-15 10:10
请问这个需要怎么解决呢,还有怎么会出现这个用户警告的
换几个 xlsx 试试
或者是因为文件名是中文的原因(也许)? _2_ 发表于 2020-5-15 11:17
换几个 xls 试试
或者是因为文件名是中文的原因(也许)?
1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名中文没关系 这是报警,不是报错,翻译过来是:表中包含非默认样式,使用openpyxl默认样式(打开)。这个跟你打开的三个文件的内容有关,你可以手工load_workbook每一个文件,看看是哪个文件会出现报警,然后再看看那个文件里是否包含有特殊的样式、字体。如果还是找不到原因,文件不大的话,打包上传让大家帮忙看看,如果没有权限上传,用百度网盘。
PS:import openpyxl和from openpyxl import load_workbook只用执行其中一句,因为你后面只用到load_workbook,推荐就用from openpyxl import load_workbook这句,下面的openpyxl.load_workbook就只用写load_workbook就可以了。 往北向南 发表于 2020-5-15 11:25
1、openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库,不支持xls的。
2、和文件名 ...
那就是文件名中的空格,但好像问题不大 问下楼主,如果表格里边有公式和百分比的value,
写read_only能完全转换成数值吗? 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.
""" 往北向南 发表于 2020-5-15 13:59
可以看看这个
class:`openpyxl.worksheet.iter_worksheet.IterableWorksheet`
and the returned workbook will be read-only.
这样就可以对吗
页:
[1]
2