首页 > 解决方案 > 从数组生成字符串格式的 Excel 单元格范围?

问题描述

我正在尝试以编程方式使用 xlsx 编写器:

  1. 将数据集插入 Excel 工作表
  2. 将与数据集具有相同域的相关不确定性数据(“噪声”)插入工作表
  3. 创建具有自定义误差线的 Excel 散点图,指向 (2) 中的噪声数据以用作高误差值和低误差值

我发现 error_bar 属性 (plus_values, minus_values) 无法识别 xlsx writer 中其他地方使用的单元格范围 ['sheet name', start_row, start_col, end_row, end_col] 的数组格式。

有没有办法利用模块中必须已经存在的数组->字符串格式的转换功能?(例如xlsxwriter.cell_range(['data', 1,2,252,2])返回字符串"='data'!$D$2:$D$253"

或者,这是一种足够常见的情况,可以更新自定义错误栏功能以支持数组和字符串格式的单元格范围?

请参阅下面的示例代码。

import xlsxwriter
import pandas as pd
import numpy as np

writer = pd.ExcelWriter('err_bar_test.xlsx', engine='xlsxwriter')

x_axis = np.arange(0,8*np.pi,0.1)
y_axis = np.sin(x_axis)
noise = np.random.random_sample(len(x_axis))


df = pd.DataFrame({'axis' : x_axis,
                   'value': y_axis,
                   'std_dev' : noise,
                  } )

df.to_excel(writer, sheet_name='data')
workbook  = writer.book
worksheet = writer.sheets['data']


chart = workbook.add_chart({'type': 'scatter'})
worksheet.insert_chart('F2', chart)
chart.add_series({ 
    'values': ['data', 1,2,252,2],
    'categories': ['data', 1,1,252,1],
    'y_error_bars':{
        'type': 'custom',

# This works
        'plus_values': "='data'!$D$2:$D$253",
        'minus_values': "='data'!$D$2:$D$253",

# This does not work :(
#         'plus_values': ['data',1,3,252,3],
#         'minus_values': ['data',1,3,252,3],

                 },
    'smooth': 'true',
})

writer.save()

标签: xlsxwriter

解决方案


推荐阅读