我在header.jpeg
我想将该图像设置为excel文件的标头。
我正在使用模块pandas, numpy and xlsxwriter
代码看起来像这样
image_file = open('header.jpeg', 'rb')
image_data = xlsxwriter.compatibility.BytesIO(image_file.read())
worksheet.set_header('&C&G', {'image_center': 'header.jpeg','image_data_left': image_data})
它也适用于
worksheet.set_header('&C&G', {'image_center': 'header.jpeg'})
如何在标题中调整图像大小,让我们说它的高度为80%?
根据文档我发现我可以使用
http://xlsxwriter.readthedocs.io/page_setup.html
可用选项包括:
保证金:(浮动)标题边距(英寸)。默认为0.3英寸。 image_left:(string)图像的路径。需要& G占位符。 image_center :(字符串)与上面相同。 image_right :(字符串)与...相同 以上。 image_data_left:(BytesIO)图像数据的字节流。 image_data_center :( BytesIO)与上面相同。 image_data_right: (BytesIO)同上。 scale_with_doc :( boolean)带有的缩放标题 文献。默认为True。 align_with_margins :( boolean)对齐标题 利润率。默认为True。
由于
答案 0 :(得分:2)
如何在标题中调整图像大小,让我们说它的高度为80%?
XlsxWriter目前不支持。您可以打开功能请求,我会查看添加功能。
或者,您可以使用其他应用程序或模块缩小图像。
答案 1 :(得分:1)
只是想为您提供一个示例,说明如何使用xlsxwriter之外的其他模块缩小图像,然后使用xlsxwriter将其放在.xlsx文件中。这个例子有一个相当大的警告:它不适用于.jpeg,只能使用.png。但是,此示例允许您更改其原始图像大小的80%的高度,并将结果图像放在标题中。
它在此示例中使用urllib.request,以便代码可重现(如果您使用本地文件,则不需要该模块)。它还使用PIL(http://php.net/manual/en/xsltprocessor.transformtodoc.php)。
import urllib.request
from PIL import Image
import xlsxwriter
import os
url = 'https://upload.wikimedia.org/wikipedia/en/thumb/4/43/Ipswich_Town.svg/255px-Ipswich_Town.svg.png'
urllib.request.urlretrieve(url, "local_100_perc.png")
with Image.open("local_100_perc.png") as img:
width_100 = img.width
height_100 = img.height
width_80 = int(round(width_100 * 0.8, 0))
img = Image.open('local_100_perc.png')
wpercent = (width_80/float(width_100))
hsize = int((float(height_100)*float(wpercent)))
img = img.resize((width_80,hsize), Image.ANTIALIAS)
img.save('local_80_perc.png')
workbook = xlsxwriter.Workbook('headers.xlsx')
worksheet1 = workbook.add_worksheet('Image_100_perc')
header1 = '&L&G'
worksheet1.set_margins(top=3.8)
worksheet1.set_header(header1, {'image_left': 'local_100_perc.png'})
worksheet1.write('A1', '100 percent image in Header.')
worksheet2 = workbook.add_worksheet('Image_80_perc')
header2 = '&L&G'
worksheet2.set_margins(top=3)
worksheet2.set_header(header2, {'image_left': 'local_80_perc.png'})
worksheet2.write('A1', '80 percent image in Header.')
workbook.close()
# uncomment next two lines if you want to delete both pictures from your current directory
#os.remove('local_100_perc.png')
#os.remove('local_80_perc.png')
要在.xlsx文件中查看生成的图像,请将视图设置为'页面布局'来自'视图' tab(excel 2013)。