xlsxwriter:如果类别名称中有点和下划线,图表将从 excel 文件中删除
xlsxwriter: chart is removed from excel file if dot and underscore in category names
有点不明白:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()
# Create a new Chart object.
chart = workbook.add_chart({'type': 'column'})
# Write some data to add to plot on the chart.
names_ok = ['A', 'B']
names_notok = ['1.1_1', '2.2_2']
data = [1, 2]
worksheet.write_row('A1', names_notok)
worksheet.write_row('A2', data)
chart.add_series({
'values': ['Sheet1', 1, 0, 1, 4],
'categories': ['Sheet1', 0, 0, 0, 4],
})
# Insert the chart into the worksheet.
worksheet.insert_chart('A4', chart)
workbook.close()
运行 这个脚本在第 14 行使用 names_ok
没问题,一切都符合预期。如果使用 names_notok
,则 python 没有错误。但是用Office 2016打开后,Excel报错,将图表从sheet.
中移除
这是 XlsxWriter 中的一个错误。
首先,您可以通过向系列中添加一个空 category_data
列表 属性 来解决此问题:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()
chart = workbook.add_chart({'type': 'column'})
names_notok = ['1.1_1', '2.2_2']
data = [1, 2]
worksheet.write_row('A1', names_notok)
worksheet.write_row('A2', data)
chart.add_series({
'categories': ['Sheet1', 0, 0, 0, 1],
'values': ['Sheet1', 1, 0, 1, 1],
'categories_data': [],
})
worksheet.insert_chart('A4', chart)
workbook.close()
输出:
出现此问题是因为 '1.1_1'
是一个字符串,但可以计算为浮点数,因为下划线在 PEP-0515:
之后有效
>>> float('1.1_1')
1.11
更新:修复了 xlsxwriter main.
有点不明白:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()
# Create a new Chart object.
chart = workbook.add_chart({'type': 'column'})
# Write some data to add to plot on the chart.
names_ok = ['A', 'B']
names_notok = ['1.1_1', '2.2_2']
data = [1, 2]
worksheet.write_row('A1', names_notok)
worksheet.write_row('A2', data)
chart.add_series({
'values': ['Sheet1', 1, 0, 1, 4],
'categories': ['Sheet1', 0, 0, 0, 4],
})
# Insert the chart into the worksheet.
worksheet.insert_chart('A4', chart)
workbook.close()
运行 这个脚本在第 14 行使用 names_ok
没问题,一切都符合预期。如果使用 names_notok
,则 python 没有错误。但是用Office 2016打开后,Excel报错,将图表从sheet.
这是 XlsxWriter 中的一个错误。
首先,您可以通过向系列中添加一个空 category_data
列表 属性 来解决此问题:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()
chart = workbook.add_chart({'type': 'column'})
names_notok = ['1.1_1', '2.2_2']
data = [1, 2]
worksheet.write_row('A1', names_notok)
worksheet.write_row('A2', data)
chart.add_series({
'categories': ['Sheet1', 0, 0, 0, 1],
'values': ['Sheet1', 1, 0, 1, 1],
'categories_data': [],
})
worksheet.insert_chart('A4', chart)
workbook.close()
输出:
出现此问题是因为 '1.1_1'
是一个字符串,但可以计算为浮点数,因为下划线在 PEP-0515:
>>> float('1.1_1')
1.11
更新:修复了 xlsxwriter main.