使用 xlwt Python Odoo 插入图像?
Insert image using xlwt Python Odoo?
我正在使用 Odoo 10。我正在尝试使用 xlwt 库在 excel sheet 中插入徽标图像。我尝试了以下 link 的解决方案,但它对我不起作用。
我的代码:
from PIL import Image
img = Image.open("/my_module/static/description/logo.png")
r, g, b, a = img.split()
img = Image.merge("RGB", (r, g, b))
img.save('imagetoadd.bmp')
xlwt.insert_bitmap('imagetoadd.bmp', 0, 0)
错误:
IOError:[Errno 2] 没有这样的文件或目录:'/my_module/static/description/logo.png'
我仔细检查了我的路径和拼写是否正确,我已经重新启动了服务器,也升级了。
当我给出这样的完整路径时:
/home/用户名/文件夹/自定义插件/my_module/static/description/logo.png
我收到以下错误:
ValueError:需要超过 3 个值才能解包
请帮助我如何使用 xlwt 将图像插入 excel sheet。谢谢!
这个 ValueError: need more than 3 values to unpack
错误的发生可能是因为 img.split()
是 return 少于 4 个项目的元组,而你 unpacking
是 4 个变量,r g b a
。检查 img.split()
return 的长度并相应地分配给变量,或者使用索引访问前 3 个元素,如
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
更新:
from PIL import Image
import xlsxwriter
from io import BytesIO
workbook = xlsxwriter.Workbook('filename.xlsx')
worksheet1 = workbook.add_worksheet()
img = Image.open("/home/username/folder/custom-addons/my_module/static/description/logo.png")
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
img = Image.merge("RGB", (r, g, b))
fo = BytesIO()
img.save(fo, format='bmp')
worksheet1.insert_image('A1', 'python.png', {'image_data': fi})
workbook.close()
好的,我从 xlwt
库的源代码中找到了所需的函数。
from PIL import Image
import xlwt
from io import BytesIO
workbook = xlwt.Workbook()
worksheet1 = workbook.add_sheet('Test')
img = Image.open("/home/username/folder/custom-addons/my_module/static/description/logo.png")
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
img = Image.merge("RGB", (r, g, b))
fo = BytesIO()
img.save(fo, format='bmp')
worksheet1.insert_bitmap_data(fo.getvalue(),0,0)
workbook.save('filename.xls')
img.close()
我正在使用 Odoo 10。我正在尝试使用 xlwt 库在 excel sheet 中插入徽标图像。我尝试了以下 link 的解决方案,但它对我不起作用。
我的代码:
from PIL import Image
img = Image.open("/my_module/static/description/logo.png")
r, g, b, a = img.split()
img = Image.merge("RGB", (r, g, b))
img.save('imagetoadd.bmp')
xlwt.insert_bitmap('imagetoadd.bmp', 0, 0)
错误: IOError:[Errno 2] 没有这样的文件或目录:'/my_module/static/description/logo.png'
我仔细检查了我的路径和拼写是否正确,我已经重新启动了服务器,也升级了。
当我给出这样的完整路径时: /home/用户名/文件夹/自定义插件/my_module/static/description/logo.png 我收到以下错误: ValueError:需要超过 3 个值才能解包
请帮助我如何使用 xlwt 将图像插入 excel sheet。谢谢!
这个 ValueError: need more than 3 values to unpack
错误的发生可能是因为 img.split()
是 return 少于 4 个项目的元组,而你 unpacking
是 4 个变量,r g b a
。检查 img.split()
return 的长度并相应地分配给变量,或者使用索引访问前 3 个元素,如
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
更新:
from PIL import Image
import xlsxwriter
from io import BytesIO
workbook = xlsxwriter.Workbook('filename.xlsx')
worksheet1 = workbook.add_worksheet()
img = Image.open("/home/username/folder/custom-addons/my_module/static/description/logo.png")
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
img = Image.merge("RGB", (r, g, b))
fo = BytesIO()
img.save(fo, format='bmp')
worksheet1.insert_image('A1', 'python.png', {'image_data': fi})
workbook.close()
好的,我从 xlwt
库的源代码中找到了所需的函数。
from PIL import Image
import xlwt
from io import BytesIO
workbook = xlwt.Workbook()
worksheet1 = workbook.add_sheet('Test')
img = Image.open("/home/username/folder/custom-addons/my_module/static/description/logo.png")
image_parts = img.split()
r = image_parts[0]
g = image_parts[1]
b = image_parts[2]
img = Image.merge("RGB", (r, g, b))
fo = BytesIO()
img.save(fo, format='bmp')
worksheet1.insert_bitmap_data(fo.getvalue(),0,0)
workbook.save('filename.xls')
img.close()