从 xlsxwriter 生成的 excel 图表中隐藏 #N/A 或空单元格

Hiding #N/A or empty cells from an excel chart produced by xlsxwriter

本质上,我正在使用 xlsxwriter 生成大量图表,并试图确保在我拥有 #N/A 的图表中出现空白。不幸的是,除非选择 show #N/A as empty cell 设置,否则这是不可能的(我不认为它是受支持的功能,因为它对于 excel 来说是相对较新的)。

我目前正在使用以下代码生成上述内容:


from xlsxwriter.workbook import Workbook

workbook  = Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

bold = workbook.add_format({'bold': True})

headings = ['Number', 'Value']

line_chart = workbook.add_chart({'type': 'line'})

line_chart.add_series({
    'categories': '={1,2,3,4,5,6}',
    'values':     '={2,#N/A,2,3,4,#N/A}'
})

worksheet.insert_chart('F2', line_chart)

workbook.close()

我知道如果我改成下面这样,问题就解决了,但是我的目标是使用上面的方法。如果不可能那也没关系。


from xlsxwriter.workbook import Workbook

workbook  = Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

bold = workbook.add_format({'bold': True})

headings = ['Number', 'Value']
data = [
    [1, 2, 3, 4, 5, 6],
    [2,'', 2, 3, 4,'=NA()'],
]

worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])

line_chart = workbook.add_chart({'type': 'line'})

line_chart.add_series({
    'categories': '=Sheet1!$A:$A',
    'values':     '=Sheet1!$B:$B',
})

worksheet.insert_chart('F2', line_chart)

workbook.close()

Unfortunately it is not possible unless the show #N/A as empty cell setting is selected (I dont believe it is a supported feature as it is relatively new for excel).

没错。看起来该功能是最近在 Excel 16 中添加的(XML 元素是 <c16r3:dataDisplayOptions16>)。所以它在 XlsxWriter 中不受支持。

请注意,可以使用 chart.show_blanks_as():

设置前 3 个选项
chart.show_blanks_as('span')

可用的选项是:

  • gap:空白数据显示为间隙。默认值。
  • zero:空白数据显示为零。
  • span: 空白数据用线连接