Odoo Image In Excel
I'm creating an excel file with xlsxwriter and need to place my company logo into these excel file.. I've been trying with insert_image but not success. I suppose that is something
Solution 1:
In Odoo v11 I use :
buf_image=io.BytesIO(base64.b64decode(partner.image))
sheet1.insert_image('B3', "any_name.png", {'image_data': buf_image})
Solution 2:
this is the format for adding images in worksheet
import xlsxwriter
# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('images.xlsx')
worksheet = workbook.add_worksheet()
# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 30)
# Insert an image.
worksheet.write('A2', 'Insert an image in a cell:')
worksheet.insert_image('B2', 'python.png')
# Insert an image offset in the cell.
worksheet.write('A12', 'Insert an image with an offset:')
worksheet.insert_image('B12', 'python.png', {'x_offset': 15, 'y_offset': 10})
# Insert an image with scaling.
worksheet.write('A23', 'Insert a scaled image:')
worksheet.insert_image('B23', 'python.png', {'x_scale': 0.5, 'y_scale': 0.5})
workbook.close()
In case of a stored image in Odoo look here an example using openpyxl, use the same format.
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.drawing import Image
from PIL import Image as PILImage
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
wb = Workbook()
ws = wb.get_active_sheet()
#extra has the data of the image from the database
im = PILImage.open(StringIO(extra))
img = Image(im)
img.anchor(ws.cell('F1'))
ws.add_image(img)
handler = StringIO()
writer = ExcelWriter(wb)
writer.save(handler)
xls = handler.getvalue()
handler.close()
Solution 3:
Finaly did it with openpyxl
@api.multi
def report_print(self):
user=self.env['res.users'].browse(self.env.uid)
partner = self.env['res.partner'].browse(user.company_id.id)
partner_name = partner.name
wb = Workbook()
ws = wb.get_active_sheet()
binaryData=partner.image_medium
data=base64.b64decode(binaryData)
im = PILImage.open(BytesIO(data))
img = OPYImage(im)
ws.add_image(img, "A3")
width, height = im.size
#=======================================================================
# more code
#=======================================================================
output=BytesIO()
wb.save(output)
self.write({
'file':base64.b64encode(output.getvalue()),
'file_name':'my_file_name_.xlsx'
})
wb.close()
output.close()
It works in Odoo 11 and Python 3
Post a Comment for "Odoo Image In Excel"