If this:
Will take a bytes string of the image instead of a file, (as suggested by the error it gave you) then you should be able to cut out all of the turning it into a file part and just do:
image_objs[0].get_bytes()
worksheet.insert_image(row,3,image_objs[0].get_bytes(), {'x_offset': 5, 'y_offset': 5, 'positioning': 1})
You can get the bytes string directly from the anvil media object without messing around with temporary files of any kind.