python - openpyxl 在不同操作系统中的行为不同
问题描述
我有一个使用 openpyxl 生成 xlsx 格式报告的 python 代码。它首先将模板复制到具有不同名称的新文件中,在其上填充数据,最后以不同的名称保存。模板(当然是 xlsx 格式)包含徽标,当我在 Linux 中运行代码时,我会得到预期的带有徽标的输出文件,但是当我在 Windows 中运行相同的代码时,我会得到没有徽标的输出!
import openpyxl
import re
import shutil
import os
src = r'/app1/labreport_template.xlsx'
dst = r'/app1/labreport.xlsx'
shutil.copyfile(src, dst)
my_wb=openpyxl.load_workbook("app1/labreport.xlsx")
my_sheet = my_wb.active
##all selections and formatting run here##
##End_Of_Formatting_Output##
my_wb.save("/XP_2600/Reporting_21/labreport.xlsx")
zrc = r'/app1/labreport.xlsx'
dzz = r'/app1/' + idx + '.xlsx'
shutil.copyfile(zrc, dzz)
os.remove(zrc)
print('Successfully generated the report: ' + ' ' + dzz )
Windows 版本只有 Windows 路径,其他一切都与 Linux 版本完全相同,知道有什么问题吗?谢谢。
解决方案
我通过添加以下内容找到了解决方法:
##Logo_Entry
logo = openpyxl.drawing.image.Image('logo.png')
logo.anchor = 'A1'
my_sheet.add_image(logo)
##Logo_End
当然它不是一个解决方案,我仍然想知道为什么 Windows 上的 openpyxl 会像这样处理文件!但我添加了解决方法,也许它可以帮助面临同样问题的人。
推荐阅读
- awk - awk:生成 icalendar 文件。如何打印一些连续的行?
- python - img src 在 Django 中无法使用 Bootstrap Carousel
- css - UI5:单击按钮后更改列表项的样式
- python - 使用 executemany() 加载 CSV 的 Python cx_Oracle 给出“未找到必需的参数‘参数’(位置 2)”
- sql-server - SQL Server 子查询返回超过 1 个值。这是不允许的
- symfony - 具有“算法:自动”的用户密码字段的最大长度?
- python-3.x - 如何解决autopytoexe中的错误以将python程序编译为exe?
- mule - RAML 字符串数组中项目的最大长度
- c++ - CMake 链接器标志
- c# - 使用泛型转换器使用派生源类列表中的对象更新目标派生类列表中的对象