首页 > 解决方案 > Xlsxwriter:如何禁用数据标签中的文本换行?

问题描述

我正在使用 XLSX 编写器生成饼图,除了一件事之外,一切都很顺利:我似乎找不到一种方法来控制文本包装在我的数据标签(包含百分比值)中。任何大于 10 的字体大小都会导致“%”符号在数字下方换行(您可以在我附在下面的图片中看到这一点)。我正在尝试生成许多图表,因此手动调整它们可能会耗费大量时间。

文档建议可以从 num_format 启用或禁用换行。对于单元格,此属性设置为“格式”对象。但是,虽然数据标签文本具有 num_format 属性,但文档明确声明它必须使用字符串文字进行设置,并且不能采用格式对象。我不知道如何防止字符串用字符串文字格式换行。

或者,我研究了扩展/减少数据标签的宽度/高度。但是,库中似乎也缺少此选项。

据我所知,其他属性似乎都没有建议避免包装文本的方法。

我的问题是,有没有我缺少的解决方案?我将在下面留下一些输出和代码。

当前代码:

        chart.add_series({
        'categories' : '={}!B1:C1'.format(product_sheetname),
        'values' : '={}!B2:C2'.format(product_sheetname),
        'data_labels':{
            'percentage':True, 
            'fill': {'color':'#363636'},
            'font': {'name':'Arial (Body)', 'color':'white', 'size':16},
        },
        'points' : [
            {'fill':{'color':'#4471d2'}},
            {'fill':{'color':'#ff871c'}}
        ]        
    })

电流输出:

在此处输入图像描述

更新:根据下面的评论,一个快速的解决方法是扩大图表的大小。虽然这解决了换行问题,但它破坏了使用更大字体的目的。

标签: xlsxwriter

解决方案


XlsxWriter 中没有任何方法可以调整数据标签的大小,但 Excel 应该自动执行此操作以获得最佳结果。

我试图复制,但没有看到你得到的文本换行(即使我尝试了 3 个不同版本的 Excel):

import xlsxwriter

workbook = xlsxwriter.Workbook('chart_pie.xlsx')

worksheet = workbook.add_worksheet()

worksheet.write_row('B1', ['Apple', 'Cherry'])
worksheet.write_row('B2', [53, 47])

chart = workbook.add_chart({'type': 'pie'})

product_sheetname = 'Sheet1'

chart.add_series({
    'categories' : '={}!B1:C1'.format(product_sheetname),
    'values' : '={}!B2:C2'.format(product_sheetname),
    'data_labels':{
        'percentage':True,
        'fill': {'color':'#363636'},
        'font': {'name':'Arial (Body)', 'color':'white', 'size':16},
    },
    'points' : [
        {'fill':{'color':'#4471d2'}},
        {'fill':{'color':'#ff871c'}}
    ]
})

worksheet.insert_chart('B3', chart, {'x_offset': 25, 'y_offset': 10})

workbook.close()

输出:

在此处输入图像描述


推荐阅读