如何使用 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:如何编写引用不同工作表的公式