python - 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)
解决方案
Excel 中的列宽是一门不精确的科学,因为它取决于屏幕的物理尺寸和分辨率,因此您最多只能近似。例如,我有一个将宽度设置为 14 的脚本,这对应于 MacOS 上的 84 像素和 Excel 上的 13.17——它很可能会计算没有填充的可用空间,理论上你也需要考虑这一点。
有关更多信息,您可以阅读 OOXML 规范中如何计算宽度。然后忘记它,因为屏幕和操作系统从那时起就一直在发展。
推荐阅读
- ios - 我们可以检查允许应用程序请求跟踪切换是否打开
- c# - 如何使用 SocketIOClient 将 C# 连接到 SocketIO
- javascript - 重定向而不重新加载页面
- javascript - 为什么从异步函数返回的对象上自动访问“then”属性?
- arduino - serial.parseInt() 自己返回一个 0 值
- python - Python Dataframe 存储具有最大行数的列的名称
- google-apps-script - 将图像附加到 Telegram 机器人通过谷歌表格发送的文本
- driver - 来自 ALSA 的一段 PCM 数据被复制
- ruby - 如何跳过 .map 中的空格。红宝石
- c - 通过动态分配创建数组后,在C中通过realloc改变内存大小时出现问题