Python 使用openpyxl格式化xlsx(数字格式、适合文本和收缩文本)

Python 使用openpyxl格式化xlsx(数字格式、适合文本和收缩文本),python,openpyxl,xlsx,Python,Openpyxl,Xlsx,我想使用openpyxl(不要使用其他lib)编辑具有以下代码的xlsx: from openpyxl import Workbook book = Workbook() sheet = book.active rows = [['name', 'This is number1', 'This is number2', 'longstr'], ['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa'], ['a',

我想使用
openpyxl
(不要使用其他lib)编辑具有以下代码的xlsx:

from openpyxl import Workbook
book = Workbook()
sheet = book.active
rows = [['name', 'This is number1', 'This is number2', 'longstr'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa'],
['a', 312318.231, -2312.2, 'aaaaaaaaaaaa\naaaaaaaaaaaa\naaaaaaaaaaaa']
]
for row in rows:
    sheet.append(row)
book.save('text.xlsx')
结果如下:

我想要的是

  • 使用逗号样式(千位分隔符)格式化第2列和第3列中的数字,并减少为无小数。我在代码中使用了
    “{:,.0f}”.format()
    ,但是xlsx中的输出变成了字符串

  • 让单元格与第1、2、3列的文本匹配

  • 缩小文本以适合第4列的单元格(不是标题)。在excel中,操作是
    设置单元格格式->对齐->缩小以适应

  • 上面是一个简化的示例,在实际情况中,我们有数千行和已知数量的列(比如4列)


    我刚开始使用openpyxl,你能帮我实现我的目标吗?

    列格式

    要控制Excel中的数字显示格式,可以如下设置单元格属性:

    cell.number_format = "0.0000" # 4 decimal places
    
    列宽

    设置宽度类似,但作为列属性:

    sheet.column_dimensions['A'].width = 12.5
    
    不幸的是,您需要手动计算宽度,没有好的方法可以做到这一点。我发现它列出了Calibri 11字体的所有宽度指标(Excel中的默认值)。您可以在那里查看列宽是如何计算的。

    对于“适合收缩…”。。。


    …应该这样做。

    cell.number\u format=“0.0000”
    如何设置特定列(表)中的数字?逗号样式(千位分隔符)如何?需要循环遍历每个单元格。格式字符串:check with
    from openpyxl.styles import Alignment
    
    ws['A1'].alignment = Alignment(shrinkToFit=True, horizontal='center')