如何在外部模块中定义xlsxwriter格式?

时间:2017-11-03 21:27:40

标签: python xlsxwriter

所以,我喜欢xlsxwriter,我可能只是在我的方法中做了一些“unpythonic”,但我想用一个外部文件来定义我的格式,这样我就可以把它拉到我所有的其他代码中,这样我可以使用一致的格式而无需重复复制格式代码。

作为一个过于简化的例子,如果我用这些内容创建一个名为“table_formats.py”的文件:

    def format_tables(myworkbook):
        # Create a format for a bolded title:
        myheader_format = myworkbook.add_format({
            'bold': True,
            'font_size': 14,
            'text_wrap': False
        })

...然后,在这里跳过一堆其他代码,我在我的主程序中调用add_format函数:

    from table_formats import *
    format_tables(myworkbook)

...运行没有错误,但是当我尝试使用这样的格式时:

    myworksheet.write(whichrow, whichcol, 'Big Data', myheader_format)

...它会抛出错误:

    NameError: name 'myheader_format' is not defined

注意:如果格式在同一个python文件中,我的格式就可以工作,只要它们是通过外部模块中的函数定义的。我认为这是一种常见的设计模式,但未发现任何类似的问题。我对python很新,所以再次可能只是从根本上说“unpythonic”,我在这里做错了。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你的format_tables函数只声明一个局部变量,它在你调用函数的那一刻就消失了。

您可以更改功能以返回新创建的格式:

def format_tables(workbook):
    # Create a format for a bolded title:
    myheader_format = workbook.add_format({
        'bold': True,
        'font_size': 14,
        'text_wrap': False
    })
    return myheader_format

并在另一个模块中使用它,如:

from table_formats import format_tables
myheader_format = format_tables(myworkbook)