如何使用 xlsxwriter 和 python 将图像添加到 xlsx 文件的标题?

Posted

技术标签:

【中文标题】如何使用 xlsxwriter 和 python 将图像添加到 xlsx 文件的标题?【英文标题】:How can i add an image to a header of a xlsx file using xlsxwriter and python? 【发布时间】:2019-03-26 16:41:47 【问题描述】:

我想在 xlsx 的标题中添加一个图像,但它在生成的文件上没有显示任何内容(我们的应用程序选择一个 .csv,然后使用带有 xlsxwriter 的 .py 文件转换为 .xlsx,然后使用一个libreoffice 命令)

我们已经尝试过使用不同的图像格式和尺寸,但没有任何区别。

还尝试使用库 (https://xlsxwriter.readthedocs.io/example_headers_footers.html?highlight=set_header) 中的示例,但没有成功。

我们使用了worksheet.insert_image(),它添加了图像但不在标题中。这是我们当前的结果:https://ibb.co/QNXv8bM

我们想直接在标题上添加图像(可能使用set_header()),但到目前为止,我们尝试使用这种方法还没有产生任何结果。当我们使用set_header() 放置图像时,它在标题上没有显示任何内容。

这是我们正在使用的一段 python 文件:

def create_worksheet(workbook, data, image, p_header_text):
    '''
    Creates and formats worksheet
    :param workbook: Main workbook
    :type workbook: xlsxwriter.Workbook
    :param data: dict with data to use in the worksheet
    :type data: dict
    data example:
    data = 'headings': [head1, head2, ..., headn], 'rows': [[data1, ..., datan], ...]
    :return: Nothing
    '''
    worksheet = workbook.add_worksheet()
    ### Page Setup
    worksheet.set_margins(top=1.4)
    worksheet.set_landscape()
    worksheet.hide_gridlines(2)
    #worksheet.set_paper(9)  # 9 = A4
    worksheet.fit_to_pages(1, 0)
    ### Header and footer
    header_text = p_header_text
    #worksheet.set_header('&C&16&"Calibri,Bold"'.format(header_text))
    worksheet.set_header('&L&G', 'image_left': '/home/reports/LTA-logo.jpg')


    worksheet.set_footer('&L&D&RPage &P of &N')
    #worksheet.insert_image('A1', '/home/reports/LTA-logo.jpg', 'x_offset': 0, 'y_offset': 0)
    #worksheet.set_header('&C&G', 'image_left': '/home/reports/LTA-logo.jpg')

    ### Create table
    create_table(worksheet, data)

注意worksheet.set_header('&C&16&"Calibri,Bold"'.format(header_text)) 工作正常,它显示标题上的文本。问题是当我们尝试放置图像时......

预期的结果是使图像出现在标题中,与标题左对齐,如下图所示:https://ibb.co/vQTytK2

注意 2:出于商业原因(公司),我无法在打印屏幕上显示数据

【问题讨论】:

【参考方案1】:

它应该适用于 XlsxWriter。您只需要使用&L 左侧部分和&C 中心部分以正确的方式构建格式字符串。

例如:

import xlsxwriter

workbook = xlsxwriter.Workbook('headers_footers.xlsx')
worksheet = workbook.add_worksheet('Image')

# Adjust the page top margin to allow space for the header image.
worksheet.set_margins(top=1.3)

worksheet.set_header('&L&[Picture]&C&16&"Calibri,Bold"Revenue Report',
                     'image_left': 'python-200x80.png')

workbook.close()

注意,我在示例中使用了更明确的&[Picture],但&G 也可以。

输出:

【讨论】:

用您的建议编辑了代码,但仍然没有放置图像:/ 这里是完整脚本的链接(只有 170 行)codeskulptor.org/#user45_bkdvNJiWYy_2.py 也许创建其他 .py 文件以仅在标题中插入图像?还是操作最终的 PDF 并在其中插入图像? 如果您运行我的示例,它是否有效?图片在 XlsWriter 的示例目录中:here。 现在测试,它生成 headers_footers.xlsx 但是当我打开它时它是空白的.. 看截图:ibb.co/G9QGZQR

以上是关于如何使用 xlsxwriter 和 python 将图像添加到 xlsx 文件的标题?的主要内容,如果未能解决你的问题,请参考以下文章

python使用xlsxwriter模块生成和处理Excel文档

Python使用xlsxwriter生成Excel和设置打印格式(推荐)

如何强制Python XlsxWriter以自定义格式写入单元格

Python xlsxwriter:如何编写引用不同工作表的公式

使用 Python 和 XLSXWriter 将格式应用于多个 Excel 工作表

python使用xlsxwriter