与openpyxl相同的类名

时间:2019-02-26 16:32:07

标签: python-3.x openpyxl

操作系统:Windows,Spyder 3.3.3,Python 3.7.2

我正面临错误,例如:

File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile execfile(filename, namespace)

File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace)

TypeError: __init__() got an unexpected keyword argument 'typeface'

我相信原因是因为我正在使用同名的类。例如,我有一只手:

openpyxl.styles.fonts.Font

另一方面,我有:

openpyxl.drawing.text.Font

对于第一个,标记名是font。第二个是latin

我正在使用第一个来定义NamedStyle。同时,我正在使用第二种来定义用于轴标签的字体类型。

我会举一个例子。

下一个代码给出了上述错误:

from openpyxl.drawing.text import Font, ParagraphProperties, CharacterProperties
from openpyxl.styles import Font, Border, PatternFill, Side

# Defining font for axis label
fon = Font(typeface = "Arial")
cx = CharacterProperties(latin = fon, sz = 1400, b = True)
ax = ParagraphProperties(defRPr = cx)

下一个代码很好用:

from openpyxl.styles import Font, Border, PatternFill, Side
from openpyxl.drawing.text import Font, ParagraphProperties, CharacterProperties

# Defining font for axis label
fon = Font(typeface = "Arial")
cx = CharacterProperties(latin = fon, sz = 1400, b = True)
ax = ParagraphProperties(defRPr = cx)

如何在不引起误解的情况下进行?

1 个答案:

答案 0 :(得分:0)

Blame OOXML,对于基本相同的对象具有不同的定义。但是在XML和Python中,元素/类都是使用名称空间隔离的。这很烦人,但是只要您注意名称空间就可以了。

这些元素不可互换:您不能在openpyxl.drawing.text.CharacterProperties元素中使用openpyxl.styles.font.Fontopenpyxl.styles.font.Font还将属性family用于字体。

from openpyxl.drawing.text import Font
fon = Font(typeface = "Arial")