Python XML NameError:全局名称' qn'没有定义

时间:2018-03-02 13:23:53

标签: python xml import docx defined

我正在使用python-docx创建一个脚本(rows = 1,cols = 1)。单元格内的文本需要垂直和水平对齐,背景为灰色。

我使用WD_TABLE_ALIGNMENT水平对齐文本和xml以为背景着色。但这是我的问题。我把一个XML脚本垂直对齐,我有一个错误:"全局名称' qn'未定义。"

以下是代码:

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import nsdecls
from docx import parse_xml, OxmlElement

def create_table():
    table = document.add_table(rows=1, cols=1)
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    row_cells=table.rows[0].cells
    tc=row_cells[0]._tc
    tcPr=tc.get_or_add_tcPr
    tcVAlign = OxmlElement('w:vAlign')
    tcVAlign.set(qn('w:val'), "center")
    tcPr.append(tcVAlign)

是导入错误吗?还是脚本错误?

感谢。

1 个答案:

答案 0 :(得分:0)

我正在查看docx库,在/docx/oxml/xlmchemy.py中找到了一行:

from .ns import qn

所以我试着这样做:

from docx.oxml.ns import qn

这是一个ns函数,它可以工作。

感谢。