2016-09-23 55 views
3

我正在使用xlsxwriter生成图表。我正在尝试为类别轴使用文本,它几乎适用于所有的Excel版本(2007,2010)。但不是在Excel 2013中,而不是在Microsoft Excel Online(这看起来像是Excel 2013)。python xlsxwriter - Excel 2013柱形图中错误的类别轴

问题:类别轴显示为序号(1,2,3 ..),而不是单元格中的实际文本。 这是我的代码的相关部分,它编写了data(2大小的元组列表),并基于该数据插入列图。

xlsxwriter.Workbook('a.xlsx', {'default_date_format': 'dd/mm/yyyy'}) 
    sheet = workbook.add_worksheet(sheet_name) 
    sheet.write_row(0, 0, headers) # Write header row 
    sheet.set_column(0, 1, 25) # Column width 
    rowCount = 1 

    # Write the data 
    for text, total in data: 
     sheet.write_row(rowCount, 0, (text, total)) 
     rowCount += 1 

    column_chart = workbook.add_chart({'type': 'column'}) 
    column_chart.set_size({'width': 850, 'height': 600}) 

    column_chart.set_x_axis({'text_axis': True}) 
    column_chart.add_series({ 
     'name': sheet_name, 
     'categories': [sheet_name, 1, 0, rowCount, 0], # row, col row, col 
     'values': [sheet_name, 1, 1, rowCount, 1], 
     'data_labels': {'value': True} 
    }) 
    sheet.insert_chart('D10', column_chart) 
    workbook.close() 

我已经说过,代码输出良好XLSX,在每一个工作练成除了2013年类别轴示出了在片材(1,2,3 ...)的行号而不是文本值分配给categories选项中的图表。

在此先感谢

回答

2

没有任何原因,XlsxWriter输出将在Excel 2007工作,而不是在Excel 2013年的文件格式是默认的2007文件格式和Excel是在向后兼容性非常好。

另外,我没有看到您描述的问题。我修改你的榜样,以添加一些样本输入数据:

import xlsxwriter 

workbook = xlsxwriter.Workbook('a.xlsx', 
           {'default_date_format': 'dd/mm/yyyy'}) 

sheet_name = 'Data' 

sheet = workbook.add_worksheet(sheet_name) 
sheet.set_column(0, 1, 25) 
rowCount = 1 

data = [ 
    ['Foo', 4], 
    ['Bar', 5], 
    ['Baz', 6], 
] 

# Write the data 
for text, total in data: 
    sheet.write_row(rowCount, 0, (text, total)) 
    rowCount += 1 

column_chart = workbook.add_chart({'type': 'column'}) 
column_chart.set_size({'width': 850, 'height': 600}) 

column_chart.set_x_axis({'text_axis': True}) 
column_chart.add_series({ 
    'name': sheet_name, 
    'categories': [sheet_name, 1, 0, rowCount, 0], # row, col row, col 
    'values': [sheet_name, 1, 1, rowCount, 1], 
    'data_labels': {'value': True} 
}) 
sheet.insert_chart('D10', column_chart) 
workbook.close() 

和输出看起来是正确的在Excel 2013:

enter image description here

+0

这确实是我期待的,问题是我看到的是1,2,3而不是Foo,bar,baz。如果任何人有这个问题 - 尝试 - 升级库 – user3599803

+0

通常[升级模块](https://xlsxwriter.readthedocs.io/bugs.html#reporting-bugs)是调试XlsxWriter中任何问题的第一步。 – jmcnamara

-1

问题实际上是由我的升级版本的库解决。我的版本是0.5.1,现在是0.9。我想知道这是否是早期版本中的错误。现在工作很好,太糟糕了,我花了一些时间才弄清楚