Python 为什么;列宽“;是否设置为其他值?

Python 为什么;列宽“;是否设置为其他值?,python,python-3.x,excel,openpyxl,Python,Python 3.x,Excel,Openpyxl,我试图在现有Excel工作簿中设置100×100单元格的尺寸(高度和宽度),但无法将列的宽度设置为正确的值(尽管行高度设置为正确的值)。我试图将列宽设置为10,但打开实际的Excel文件后,列宽变成9.29。我做错了什么 from os import name import openpyxl from openpyxl.descriptors.base import DateTime from openpyxl.utils import get_column_letter import date

我试图在现有Excel工作簿中设置100×100单元格的尺寸(高度和宽度),但无法将列的宽度设置为正确的值(尽管行高度设置为正确的值)。我试图将列宽设置为
10
,但打开实际的Excel文件后,列宽变成
9.29
。我做错了什么

from os import name
import openpyxl
from openpyxl.descriptors.base import DateTime
from openpyxl.utils import get_column_letter
import datetime


def format_wb(wb):
    for ws in wb.sheetnames:
        for i in range(1, 101):
            wb[ws].column_dimensions[get_column_letter(i)].width = 10
            wb[ws].row_dimensions[i].height = 20

    return wb


def main():
    file_name = "test"
    wb = openpyxl.load_workbook(f"{file_name}.xlsx")
    wb = format_wb(wb)
    wb.save(f"{file_name}.xlsx")


if __name__ == "__main__":
    main()

[编辑]我认为这是一个更令人满意的解释:

“在Excel中,xml存储值和为用户显示的值应该不同,并且取决于在主题中选择的默认字体(对于Colibri,差异为0.7109375)

openpyxl
不加载默认字体信息,它创建的Excel文件使用相同的默认字体(Colibri 11)

因此,对于使用
openpyxl
保存的文件,0.7109375是常数。”

资料来源:


据我所知,你的代码没有问题。
最近也有同样的问题,根据经验发现,如果你想在Excel中获得一个等于整数的列宽(在你的例子中是10),你必须用openpyxl将它设置为+0.71(在你的例子中是10.71)。

是的,这正是我正在做的,但这是一个绕着陷阱走的过程。