打开现有的Excel文件,保存样式,编辑和插入Python中的图像

Ale*_*dor 5 python printing excel image

我有一个"Excel模板",我需要打开,编辑一些单元格保持样式(字体,单元格宽度和高度,单元格合并等),最后添加或插入图像(jpg或png)以保存在新的文件.

我现在尝试了4个选项.

  1. XLWT/XLRD - 这个宝贝看起来是最有效的工作,它打开xlsx很好地保存所有样式,编辑单元格很容易(有一些技巧来保持风格)但它只插入位图(bmp) )图像,当它插入图像时,它变得拉伸,不保持方面无线电或大小,我想知道它是否有解决方案.
  2. XLSXWritter - 它非常实用,易于使用来创建新文件.它无法打开现有的.这不是一个选择.:(
  3. openpyxl - 它似乎用PIL(jpg,png,gif等)插入图像,但是当我打开现有的"模板"时,所有的样式都消失了,一切都!! 所以这不是一个选择.
  4. pythonexcels - 它似乎与Microsoft Office Excel和win32com一起工作,所以它可能不是一个交叉平台选项,我找不到用这个插入图像的方法......

我想我也可以使用一些PDF创建器,但我需要保持页面大小,因为我需要将创建的文件发送到打印机,但没有字母或A4大小,我需要打印不同大小的粘性标签.

我的问题是:xlwt有什么解决方案吗?还有其他解决方案吗?

MaK*_*aNu 0

我们最近遇到了一个类似的问题,目标是保持格式完整,我们的解决方案基于 openpyxl。所以我知道 openpyxl 支持同时格式化。

这是我的简单例子,解决了疑问点:

# working dir
|- test.xlsx
|- test42.png
|- test.py
Run Code Online (Sandbox Code Playgroud)

test.xlsx

在此输入图像描述

test.py

import openpyxl

path = "test.xlsx"
wb_obj = openpyxl.load_workbook(path)
sheet_obj = wb_obj.active
cell_obj = sheet_obj.cell(row=2, column=1)
cell_obj.value = "Earth"

img = openpyxl.drawing.image.Image('test42.png')
img.anchor = 'B2'
sheet_obj.add_image(img)

wb_obj.save("test_new.xlsx")
Run Code Online (Sandbox Code Playgroud)

test_new.xlsx

在此输入图像描述