使用openpyxl从工作表复制图像

时间:2018-01-23 11:46:04

标签: python excel openpyxl

我有一个Python程序,它根据一些其他文件中的一些工作表创建一个新的excel文件。下面的代码我完全复制了工作表,但无法复制工作表中的图像。如何使用Python将Excel工作表中的图像复制到另一个Excel工作簿?

path1 = "/mnt/e/RecEasy-MVP-Python/FlaskApp/Uploaded_files/" + key
print path1
path2 = "/mnt/e/RecEasy-MVP-Python/FlaskApp/Compiled/"  + current_acc_group + "_" + current_gl_account + ".xlsx"
print path2
path_to_key_sheet = "/mnt/e/RecEasy-MVP-Python/FlaskApp/Uploaded_files/" + key + "_key_sheet.txt"
print "Path to key sheet file:"
print path_to_key_sheet

wb1 = xl.load_workbook(filename=path1, read_only=True, data_only=True)
ws1 = wb1.worksheets[2]
counter = 0
for sheet in wb1:
   if (str(sheet.title) == str(content_of_key_sheet_file)):
       ws1 = wb1.worksheets[counter]
       print "Sheet selected"
       print sheet.title
   counter = counter + 1

ws2 = wb2.create_sheet(ws1.title)
print "Copying from the Excel file: " + path1
for row in ws1:
   for cell in row:
       if (cell.value != None):
          ws2[cell.coordinate].value = cell.value

wb2.save(path2)

2 个答案:

答案 0 :(得分:0)

我一直为此苦苦挣扎,因为我通常用来处理xlsx文件的大多数库似乎都不希望支持此功能。 幸运的是,.xlsx是ooxml格式。因此,您所需要做的就是解压缩.xlsx并将图片放在您将工作簿提取到的目录的xl/media/中。

zip = ZipFile('yourWorkbook.xlsx')
zip.extractall()

现在您可以将它们重新插入新的电子表格电子表格

import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
img = openpyxl.drawing.image.Image('test.jpg')
img.anchor(ws.cell('A1'))
ws.add_image(img)
wb.save('out.xlsx')

答案 1 :(得分:0)

install Pillow(只需pip install Pillow,不需要在文件中导入)

然后:

from openpyxl import drawing 

。 。

img = drawing.image.Image('yourImg.png')
yourSheet.add_image(img, 'A2')

其中A2是您的手机