【问题标题】:Using multiple number formats with names styles in openpyxl在 openpyxl 中使用具有名称样式的多种数字格式
【发布时间】:2017-01-16 19:09:59
【问题描述】:

我正在使用 openpyxl 生成 Excel 文件。我首先打开一个具有一些预定义样式(例如“MyHeading1”)的现有工作簿,然后设置一个与此样式相同的单元格,如下所示:

ws['D5'].style = 'MyHeading1'

这可行,但我正在努力设置正确的数字格式。一些单元格是数字,而其他单元格是日期。我尝试了以下但没有成功。

if isinstance(value, datetime.date):
    cell.number_format = 'dd-mmm-yy'
else:
    cell.number_format = '# ##0.00'

所以我的问题是,在单元格的其他格式相同的情况下,处理多种数字格式的正确方法是什么?

【问题讨论】:

    标签: python openpyxl


    【解决方案1】:

    style 有一个默认值,例如 fon 是 'Calibri',size 是 11。您可以参考 this1 获取更多详细信息。您无法分配 cell.number_format 的原因可能是您将单元格分配为一般形式,然后使用 isinstance(value, datetime.date) 这不再是日期格式。您可以查看ws['D5'].number_format 进行验证。以下代码可能对您有所帮助:

    wb = Workbook()
    ws1 = wb.create_sheet(title="example")
    ws1['D5'].value = datetime.datetime.strptime('24052010', '%d%m%Y').date()
    if isinstance(ws1['D5'].value, datetime.date):
        ws1['D5'].number_format = 'dd-mmm-yy'
    else:
        ws1['D5'].number_format = '# ##0.00'
    wb.save(filename = 'test.xlsx')
    

    【讨论】:

    • 问题是一旦我使用 ws['D5'].style = 'MyHeading1' 设置样式,我就无法更改数字格式。每当我像上面那样更改数字格式时,它都会为具有该样式的所有单元格更改它。
    • 你能附上更多你的代码吗?也许我可以试着弄清楚。
    【解决方案2】:

    命名样式为数字格式,命名样式一经指定,不可更改:

    注意。将命名样式分配给单元格后,其他更改 样式不会影响单元格。

    https://openpyxl.readthedocs.io/en/stable/styles.html#named-styles

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多