首页 > 解决方案 > openpyxl sheet.column_dimensions[].width 略小于赋值

问题描述

我正在尝试自动化一个在电子表格上设置列宽的过程。下面的代码将宽度设置为 3.29,而不是 4.0。我错过了一步吗?

import tkinter as tk
from tkinter import filedialog
from openpyxl import load_workbook

root = tk.Tk()
root.withdraw()
path = filedialog.askopenfilename()
workbook = load_workbook(filename=path)
sheet = workbook.active
    
sheet.column_dimensions['A'].width = 4.0

workbook.save(filename=path)

通过脚本处理后的列电子表格的屏幕截图。

标签: pythonexcelopenpyxl

解决方案


Excel 中的列宽是一门不精确的科学,因为它取决于屏幕的物理尺寸和分辨率,因此您最多只能近似。例如,我有一个将宽度设置为 14 的脚本,这对应于 MacOS 上的 84 像素和 Excel 上的 13.17——它很可能会计算没有填充的可用空间,理论上你也需要考虑这一点。

有关更多信息,您可以阅读 OOXML 规范中如何计算宽度。然后忘记它,因为屏幕和操作系统从那时起就一直在发展。


推荐阅读